使用Code :: Blocks的未定义的SDL函数引用
关于这方面,SO上有相当多的类似主题,但我已经用完了15个类似线程的所有建议。使用Code :: Blocks的未定义的SDL函数引用
在运行使用SDL库的教程代码时,IDE抱怨所有与SDL有关的功能都是“未定义参考”。
形势
体系结构:64位
IDE:代码块16.01
编译器:GNU GCC
我试图做
1)I告诉编译器在目录下查找标题: ..... \ i686的-W64-的mingw32 \包括使用\ SDL2相对路径
我没有选择\包括我也没有选择..... \ x86_64的-W64-的mingw32 \包括\ SDL2
2)我告诉编译器找到目录下的库文件: ..... \ i686的-W64-的mingw32 \使用相对路径的lib
我没有选择.... \ lib中我也没有选择..... \ x86_64-w64-mingw32 \ lib
3)当链接库时,我在目录 .... \ i686-w64-mingw32下包含了四个库\ lib而不是上面提到的其他目录。
4),在该文库中链接的顺序如下:
SDL2main.lib
SDL2.lib
SDL2test.lib
5)本人保证属性的main.c是这样的:编译文件被检查,链接文件被检查,并且目标调试和释放中的属性都被检查。
生成日志:
--------------构建:调试中贪吃蛇游戏(编译:GNU GCC编译)-------- -------
mingw32-g ++。exe -L ...... \ Downloads \ SDL2-devel-2.0.4-mingw \ SDL2-2.0.4 \ i686-w64-mingw32 \ lib -o“bin \ Debug \ Snake Game.exe”obj \ Debug \ main.o -lmingw32 ...... \ Downloads \ SDL2-devel-2.0.4-mingw \ SDL2-2.0.4 \ i686- w64-mingw32 \ lib \ libSDL2main.a ...... \ Downloads \ SDL2-devel-2.0.4-mingw \ SDL2-2.0.4 \ i686-w64-mingw32 \ lib \ libSDL2.a OBJ \调试\ main.o:在功能
SDL_main': C:/XXX/XXX/XXX/XXX/XXX/main.c:9: undefined reference to
SDL_WM_SetCaption”
日志的推移和未定义的引用。
任何人都可以指导我解决这个链接问题吗?
SDL2中没有SDL_WM_SetCaption
。您的代码很可能会使用较旧的SDL 1.2。请使用正确的库或修改您的代码,例如https://wiki.libsdl.org/MigrationGuide
我做了以下更改:我已按照您提到的方式复制到SDL2代码中。 –
我现在正在收到一个错误“SDL.h:没有这样的文件或目录”,它现在已经成为一个编译器搜索问题。我已经离开目录相同。我包括目录作为相对和非相对。我试图将#include
我不会做猜测,不是没有源码和编译器。也许你应该在你的问题中添加你有错误的最小程序的源代码。或者只是以任何SDL2示例开始。如果您的测试程序使用“SDL_WM_SetCaption” - 显然它不适用于SDL2,并且您不应该遵循您的教程(或切换到SDL1,我不建议这样做)。很可能你会遇到一种非常不同的[链接错误](http://*.com/questions/39110217/linker-errors-from-sdl2-in-my-project);为初学者使用动态库会简单得多。 – keltar
什么编译器? MinGW的? – HolyBlackCat
请包含由code :: blocks:命令和输出提供的完整链接跟踪。 –
@HolyBlackCat GNU GCC –