在CodeLite中链接SFML

时间:2016-01-30 19:14:26

标签: c++ compiler-errors g++ sfml codelite

好的,我试图在CodeLite项目中链接SFML但没有成功。那我做了什么:

  1. 将SFML的include文件夹添加到CodeLite的IncludePaths。
  2. 将SFML的lib文件夹添加到CodeLite的LibrariesSearchPath。
  3. 在CodeLite中为预处理器添加了SFML_STATIC。

  4. 将链接库添加到LinkerOptions:

    sfml-graphics;sfml-window;sfml-audio;sfml-network;sfml-system
    
  5. 将5 dll(sfml-graphics-2.dll ..等)添加到调试文件夹和项目文件夹

  6. 这是构建日志: C:\WINDOWS\system32\cmd.exe /C ""E:/Program Files (x86)/CodeBlocks/MinGW /bin/mingw32-make.exe" -j4 SHELL=cmd.exe -e -f Makefile"" "----------Building project:[ Test - Debug ]----------" mingw32-make.exe[1]: Entering directory 'F:/Dropbox/Programming/OpenGL/Test' "E:/Program Files (x86)/CodeBlocks/MinGW/bin/g++.exe" -o ./Debug/Test @"Test.txt" -L. -LF:/Dropbox/Programming/SFML/SFML-2.3.2x86/lib sfml-graphics sfml-window sfml-audio sfml-network sfml-system g++.exe: error: sfml-graphics: No such file or directory g++.exe: error: sfml-window: No such file or directory g++.exe: error: sfml-audio: No such file or directory g++.exe: error: sfml-network: No such file or directory g++.exe: error: sfml-system: No such file or directory mingw32-make.exe[1]: *** [Debug/Test] Error 1 Test.mk:78: recipe for target 'Debug/Test' failed mingw32-make.exe[1]: Leaving directory 'F:/Dropbox/Programming/OpenGL/Test' mingw32-make.exe: *** [All] Error 2 Makefile:4: recipe for target 'All' failed ====1 errors, 0 warnings====

    我正在使用CodeLite 9.0.9和SFML-2.3.2x86。

2 个答案:

答案 0 :(得分:1)

<强> 1 即可。 &#34;从SFML 2.2开始,当静态链接时,您必须链接     所有SFML对项目的依赖性。这意味着     如果您正在链接sfml-window-s或sfml-window-s-d,例如,您     还必须链接opengl32,winmm和gdi32。其中一些     依赖库可能已经列在&#34;继承下     价值观&#34;,但你自己再添加它们不应该导致任何问题     问题&#34。 如果您要静态链接,您的链接库应该有-s后缀,您应该链接其他库,this

2 。&#34;当链接到多个SFML库时,请确保以正确的顺序链接它们,这对GCC非常重要。规则是依赖于其他库的库必须首先放在列表中。每个SFML库都依赖于sfml-system,而sfml-graphics也依赖于sfml-window。因此,这三个库的正确顺序是:sfml-graphics,sfml-window,sfml-system - 如上面的屏幕截图所示。&#34; 将链接顺序设置为graphics-s / window -s / system -s / etc

3 。&#34;链接到与配置匹配的库非常重要:&#34; sfml-xxx-d&#34;用于调试,&#34; sfml-xxx&#34;发布。糟糕的混合可能会导致崩溃。&#34; 从您的构建日志中我可以看到您正在使用Release库(没有-d后缀的那些)构建项目,然后您必须将链接库更改为sfml-graphics-sd / etc

如果以上建议不起作用,那么您将搜索路径设置错误。祝你好运

答案 1 :(得分:0)

好的,所以我终于通过改变这样的库来修复它:-lsfml-graphics-s;-lsfml-window-s;-lsfml-audio-s;-lsfml-network-s;-lsfml-system-s;-lopengl32;-lfreetype;-ljpeg;-lwinmm;-lgdi32;-lopenal32;-lws2_32