我无法编译示例代码,SFML

时间:2015-05-30 21:29:10

标签: c++ linker sfml

我看到了类似的问题,但它并没有解决我的问题。 我无法编译此示例代码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退出状态

有人可以帮我吗?

2 个答案:

答案 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