所以我试图在我的Windows笔记本电脑上运行示例SFML程序。如果相关,则源代码位于this page.
首先,我使用此命令制作.o文件 -
g++ -c a.cpp -ISFML/SFML/include
其中a.cpp是主文件,我的SFML包位于SFML / SFML中。
然后我使用这个命令编译 -
g++ a.o -o a -LSFML/SFML/lib -lsfml-graphics -lsfml-window -lsfml-system
当我第一次运行该程序时,我得到了关于无法找到某些dll,sfml-graphics-2等的错误。所以我找到了它们并将它们放在exe旁边。但是现在当我跑步时,我得到了这个奇怪的错误:
程序入口点 _ZNSt7__cxx1112basic_stringSt11char_traitsIcESalcEE7reserveEj无法在动态链接库中找到。
这里发生了什么?
答案 0 :(得分:1)
正如the SFML download page所述,您可能正在使用错误版本的编译器,您尚未从工作目录中删除的其他库版本的SFML可能在代码和链接器之间不匹配。最糟糕的情况是,如果你的编译器没有在那里列出,你必须自己编译SFML:
获取CMake。通过转到SFML下载页面的底部获取2.4.2的源代码。关注this guide on SFML's GitHub repo。或者,您可以使用the guide on SFML's page,但它适用于旧版本。它可能会回答第一个指南遗漏的一些问题
Ones CMake生成了makefile,你正在构建SFML
祝你好运!
答案 1 :(得分:1)
我遇到这个问题已经很久了,所以我只想帮助遇到同样问题的人。我有一个Windows 10 FYI和MinGW-w64 8.1.0(如果它不起作用,请尝试使用32位mingw)
用于调试模式(调试是指您仍在游戏中并且希望在每次运行时都打开命令提示符)
(通过执行“ cd”确保首先在正确的目录中)
g++ -c (file_name).cpp -o (file_name).o -I(path_to)SFML-64-bit/include -g -m64 -Wall &&
g++ (file_name).o -o (game_name).exe -L(path_to)SFML-64-bit/lib -lsfml-graphics -lsfml-window -lsfml-system
上面的代码放在命令中时,如果所有内容都在同一目录中,则会为您编译所有内容,因此请务必注意这一点
,现在为发布模式(如果您不希望显示命令提示符)
g++ -c (file_name).cpp -o (file_name).o -I(path_to)SFML-64-bit/include -O3 -m64 &&
g++ (file_name).o -o (game_name).exe -L(path_to)SFML-64-bit/lib -lsfml-graphics lsfml-window -lsfml-system -mwindows
我添加的所有内容是-mwindows和-O3以及删除-g和-Wall,它们是不必要的,因为我们将不使用命令提示符
请确保转至SFML / bin并将所有.dll放入同一个目录下,您的.exe对不起xd
希望这会有所帮助。