2016-09-15 90 views
0

关于这方面,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”

日志的推移和未定义的引用。

任何人都可以指导我解决这个链接问题吗?

+0

什么编译器? MinGW的? – HolyBlackCat

+0

请包含由code :: blocks:命令和输出提供的完整链接跟踪。 –

+0

@HolyBlackCat GNU GCC –

回答

2

SDL2中没有SDL_WM_SetCaption。您的代码很可能会使用较旧的SDL 1.2。请使用正确的库或修改您的代码,例如https://wiki.libsdl.org/MigrationGuide

+0

我做了以下更改:我已按照您提到的方式复制到SDL2代码中。 –

+0

我现在正在收到一个错误“SDL.h:没有这样的文件或目录”,它现在已经成为一个编译器搜索问题。我已经离开目录相同。我包括目录作为相对和非相对。我试图将#include 更改为#include“SDL.h”。没有运气 –

+0

我不会做猜测,不是没有源码和编译器。也许你应该在你的问题中添加你有错误的最小程序的源代码。或者只是以任何SDL2示例开始。如果您的测试程序使用“SDL_WM_SetCaption” - 显然它不适用于SDL2,并且您不应该遵循您的教程(或切换到SDL1,我不建议这样做)。很可能你会遇到一种非常不同的[链接错误](http://stackoverflow.com/questions/39110217/linker-errors-from-sdl2-in-my-project);为初学者使用动态库会简单得多。 – keltar