提问人:Code Hard 提问时间:10/16/2023 更新时间:10/16/2023 访问量:45
如何使用自定义头文件构建程序,两者都使用SFML库?
How to build program using custom header files, both using SFML library?
问:
因此,我尝试创建一个自定义头文件,其中包含我对几个图形函数(如 drawPixel、drawLine 等)的实现。我的源文件(带main功能)和头文件都包含SFML库。当我在源文件中使用 sfml 函数时,它运行没有错误,但是当我在头文件中使用相同的函数时,它显示“链接器命令失败”。
sfml.cpp(源文件)
#include<SFML/Graphics.hpp>
#include "my_graphics.h"
int main()
{
sf::RenderWindow window(sf::VideoMode(500, 500), "SFML works!");
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed) {
window.close();
}
}
// Clear the window
window.clear();
putPixel(window,100,100);
window.display();
}
return 0;
}
my_graohics.h
#ifndef MY_GRAPHICS_H
#define MY_GRAPHICS_H
#include <SFML/Graphics.hpp>
void putPixel(sf::RenderTarget& target, int x, int y);
#endif
my_graphics.cpp
#include "my_graphics.h"
void putPixel(sf::RenderTarget& target, int x, int y) {
sf::Vertex vertex;
vertex.position = sf::Vector2f(x, y);
vertex.color = sf::Color::White;
sf::VertexArray point(sf::Points, 1);
point[0] = vertex;
target.draw(point);
}
build 命令
clang++ -std=gnu++14 -std=c++17 -fcolor-diagnostics -fansi-escape-codes -g sfml.cpp
-o sfml -I /opt/homebrew/Cellar/sfml/2.6.0/include -L
/opt/homebrew/Cellar/sfml/2.6.0/lib -lsfml-graphics -lsfml-window -lsfml-system
答:
0赞
Code Hard
10/16/2023
#1
而不是单独编译文件“sfml.cpp”和“my_graphics.cpp”,并链接到每个文件的库。 我将它们编译在一起,并链接了这些库。
命令:
clang++ -std=gnu++14 -std=c++17 -fcolor-diagnostics -fansi-escape-codes -g sfml.cpp my_graphics.cpp -o program -I /opt/homebrew/Cellar/sfml/2.6.0/include -L /opt/homebrew/Cellar/sfml/2.6.0/lib -lsfml-graphics -lsfml-window -lsfml-system
评论
2赞
digito_evo
10/16/2023
在同一个生成命令中使用两者背后的原因是什么?我认为这没有任何意义。-std=gnu++14
-std=c++17
评论
my_graphics.cpp
-c
make