【问题标题】:Linking SFML in Codelite, cannot find libraries在 Codelite 中链接 SFML,找不到库
【发布时间】:2016-06-26 02:12:48
【问题描述】:

我正在尝试在 Codelite 9.1.3 中链接 SFML2.3.1。我正在使用 Windows 10、64 位。我按照本教程 http://en.sfml-dev.org/forums/index.php?topic=18820.0 做了所有事情。我做了包含路径,库路径,以正确的顺序输入了包含依赖项的库。很多其他人也问过类似的问题,我已经尝试了那里提供的所有解决方案-Linking SFML in CodeLite - 以及其他几个。这是我得到的错误:

C:\WINDOWS\system32\cmd.exe /C C:/TDM-GCC-64/bin/mingw32-make.exe -j8 SHELL=cmd.exe -e -f  Makefile
"----------Building project:[ CodeLiteProject - Debug ]----------"
mingw32-make.exe[1]: Entering directory 'C:/Users/Benjamin/Documents/sfml/CodeLiteProject'
C:/TDM-GCC-64/bin/g++.exe -o ./Debug/CodeLiteProject @"CodeLiteProject.txt" -L. -LC:/SFML-2.3.1/lib  -lsfml-graphics-s -lsfml-window-s -lsfml-system-s -lsfml-audio-s -lsfml-network-s -lopengl32 -lfreetype -ljpeg -lwinmm -lgdi32 -lopenal32 -lws2_32
C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/SFML-2.3.1/lib/libsfml-graphics-s.a when searching for -lsfml-graphics-s
C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/SFML-2.3.1/lib\libsfml-graphics-s.a when searching for -lsfml-graphics-s
C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/SFML-2.3.1/lib/libsfml-graphics-s.a when searching for -lsfml-graphics-s
C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lsfml-graphics-s

它为每个库重复相同的最后四行(跳过不兼容的 - 找不到)。毕竟它是这么说的:

collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[1]: *** [Debug/CodeLiteProject] Error 1
CodeLiteProject.mk:78: recipe for target 'Debug/CodeLiteProject' failed
mingw32-make.exe[1]: Leaving directory 'C:/Users/Benjamin/Documents/sfml/CodeLiteProject'
mingw32-make.exe: *** [All] Error 2

我之前真正使用编译器所做的所有事情都是点击“构建并运行”,所以我非常感谢任何帮助。此外,我尝试了各种不同的进入库的方式(-l*、*-s、*-s-d、*.lib、*.a 等)

【问题讨论】:

    标签: c++ mingw sfml static-linking codelite


    【解决方案1】:

    这一行:

    C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/bin /ld.exe:搜索-lsfml-graphics-s时跳过不兼容的C:/SFML-2.3.1/lib/libsfml-graphics-sa

    此错误通常表示您存在架构差异,即您的代码编译为 64 位应用程序,而 SFML 库构建为 32 位库。

    尝试使用使用 64 位编译器构建的 SFML 库(最好使用与您正在使用的编译器相同的编译器 - TDM-GCC 64 位/v5.1)

    【讨论】:

    • 所以我做到了,我想我正在进步。我想它现在正在链接,但它说应用程序无法启动并给我错误代码 0xc000007b。这与相同的问题有关,即 32 位和 64 位之间的某种冲突。我看到的所有参考资料都来自未开始的游戏。我正在研究我能找到的所有解决方案,但到目前为止一无所获。
    • 答案仍然存在:您正在混合 32 和 64 个 DLL。使用依赖walker来检查哪一个。请注意,您应该使用 64 位版本的依赖walker
    【解决方案2】:

    您似乎没有链接调试 SFML 库,但项目是在调试模式下构建的。在 Debug 中构建时,将“-d”附加到 SFML 库名称的末尾,例如:

    /TDM-GCC-64/bin/g++.exe -o ./Debug/CodeLiteProject @"CodeLiteProject.txt" -L. -LC:/SFML-2.3.1/lib  -lsfml-graphics-s-d -lsfml-window-s-d -lsfml-system-s-d -lsfml-audio-s-d -lsfml-network-s-d ... 
    

    【讨论】:

      猜你喜欢
      • 2016-05-08
      • 2022-09-27
      • 1970-01-01
      • 1970-01-01
      • 2016-10-19
      • 2018-12-22
      • 1970-01-01
      • 2021-04-15
      • 2016-11-19
      相关资源
      最近更新 更多