我看到了类似的问题,但它并没有解决我的问题。 我无法编译此示例代码http://www.sfml-dev.org/tutorials/2.3/start-linux.php。我按照这个说明操作但仍然有错误:
在最后一步之前,我写了一篇:g++ sfml.o -o sfml-app -L /home/Documents/SFML/SFML-2.1/lib -lsfml-graphics -lsfml-window -lsfml-system
我得到了这个:
sfml.o: In function main':
sfml.cpp :(。text + 0x12d):对sf :: RenderWindow :: RenderWindow(sf :: VideoMode,sf :: String const&amp ;, unsigned int,sf :: ContextSettings const&)&#39的未定义引用; collect2:ld返回1退出状态
有人可以帮我吗?
答案 0 :(得分:0)
好像你没有将sfml库链接到你的程序。在该页面的下方(在代码片段之后),该页面进一步描述了:
然后,您必须将已编译的文件链接到SFML库,以获取最终的可执行文件。 SFML由5个模块(系统,窗口,图形,网络和音频)组成,每个模块都有一个库。 要链接SFML库,必须在命令行中添加“-lsfml-xxx”,例如图形模块的“-lsfml-graphics”(库文件名的“lib”前缀和“.so”扩展名)必须省略)。
g++ main.o -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system
如果您将SFML安装到非标准路径,则需要告诉链接器在哪里可以找到SFML库(.so文件):
g++ main.o -o sfml-app -L<sfml-install-path>/lib -lsfml-graphics -lsfml-window -lsfml-system
虽然你已经在你的命令行中包含了链接,但我最好的猜测是链接器仍然找不到库,这就是sf::RenderWindow
未定义的原因(它被声明,因此编译器知道它是什么,因此编译成功,但无法正确链接,因为链接器无法找到它的引用)
答案 1 :(得分:-1)
我检查了带有库和libs的路径和文件夹: http://i.imgur.com/bTk7QCZ.png
但我仍然无法正确链接..我已经在我的标准路径(usr / lib)中安装了SFML http://i.imgur.com/Mzp9tMY.png 并且在编译之后它显示相同的错误。
错误:强>
sfml.o:在函数~> 1
sf :: RenderWindow :: RenderWindow(sf :: VideoMode,sf :: String const&amp;,unsigned int,sf :: ContextSettings const&amp;)'
collect2:ld返回1退出状态
我的代码与示例代码相同:
~> 0