c++ - 在 CodeLite 中链接 SFML

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

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

  1. 将 SFML 的包含文件夹添加到 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.. 等)添加到调试文件夹和项目文件夹

这是构建日志: C:\WINDOWS\system32\cmd.exe/C ""E:/Program Files (x86)/CodeBlocks/MinGW/bin/mingw32-make.exe"-j4 SHELL=cmd.exe -e -f Makefile “” “------------构建项目:[测试 - 调试]----------” mingw32-make.exe[1]: 进入目录'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: 错误: sfml-graphics: 没有那个文件或目录 g++.exe: 错误: sfml-window: 没有那个文件或目录 g++.exe: 错误: sfml-audio: 没有那个文件或目录 g++.exe: 错误: sfml-network: 没有那个文件或目录 g++.exe: 错误: sfml-system: 没有那个文件或目录 mingw32-make.exe[1]: *** [调试/测试] 错误 1 Test.mk:78:目标“调试/测试”的配方失败 mingw32-make.exe[1]: 离开目录 'F:/Dropbox/Programming/OpenGL/Test' mingw32-make.exe: *** [全部] 错误 2 Makefile:4: 目标 'All' 的配方失败 ====1 个错误,0 个警告====

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

最佳答案

1。 “从 SFML 2.2 开始,静态链接时,您必须链接 SFML 对您的项目的所有依赖项也是如此。这意味着 例如,如果您链​​接 sfml-window-s 或 sfml-window-s-d,您 还必须链接 opengl32、winmm 和 gdi32。其中一些 依赖库可能已经列在“已继承 值”,但你自己再次添加它们不应该造成任何 问题。” 如果你是静态链接,你的链接库应该有 -s 后缀,你应该链接其他库看看 this .

2."当链接到多个SFML库时,确保以正确的顺序链接它们,这对GCC来说非常重要。规则是依赖于其他库的库必须是放在列表的第一位。每个 SFML 库都依赖于 sfml-system,而 sfml-graphics 也依赖于 sfml-window。因此,这三个库的正确顺序是:sfml-graphics、sfml-window、sfml-system - - 如上面的屏幕截图所示。” 设置链接顺序为graphics-s/window-s/system-s/etc

3."重要的是要链接到与配置相匹配的库:"sfml-xxx-d"用于 Debug,"sfml-xxx"用于 Release。混合不好可能会导致在崩溃中。” 从你的构建日志中我可以看到你正在构建你的项目作为 Debug with Release libraries(那些没有 -d 后缀的),然后你必须将链接库更改为 sfml-graphics-s-d/etc

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

关于c++ - 在 CodeLite 中链接 SFML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35105931/

相关文章:

c++ - 如何实现创建递归 lambda 并返回它的方法

c++ - 错误: Too many initializers for character array [closed]

C++ g++和msvc之间的不同文件读/写时间

c++ - 如何在 64 位机器上将 C++ 程序编译为 64 位?

c++ - 类函数的模板变量返回类型

c++ - Visual Studio,在数组声明中使用#define 常量时出现错误 : expected a ']' ,

c++ - 在 openframeworks 中使用未声明的标识符

spring-boot - 将 Spring Boot 应用程序推送到 Heroku 时出错

c++ - 将成员函数作为回调传递给其他类的构造函数

c++ - std::for_each 使用 g++ 编译错误,而不是 VS2012