当我在我的C文件中包含SDL2 / SDL.h时,我不断收到错误“对WInMain @ 16 的未定义引用”。这是一个简单的“Hello”程序,包含SDL,如果我删除了SDL,它编译得很好(正如预期的那样)。
问题是我对C(和SDL)的编译标志是新的,我不确定如何将文件链接(?)(或者如果有必要)。我正在使用Sublime Text 3进行编码,因此我不确定如何像使用IDE时那样链接SDL。
(D:\CODE\Privata Projekt\C\test.c)
#include <stdio.h>
#include "SDL2/SDL.h"
int main(int argc, char *argv[]) {
printf("hello\n");
return 0;
}
我到MinGW和SDL2的路径是:
C:\MinGW\include\SDL2 (all my sdl header files reside in here too)
C:\MinGW\include\SDL2\bin
C:\MinGW\include\SDL2\lib
C:\MinGW\include\SDL2\share
我用
构建程序gcc test.c -o test
修改 对我有用的是使用这些标志,按照完全相同的顺序
-lmingw32 -LC:\MinGW\include\SDL2\lib -lSDL2main -lSDL2
答案 0 :(得分:1)
您还需要链接到库。您可以通过在命令行上传递正确的选项来完成此操作:-L
告诉链接器在哪里找到库,并-l
(小写L)告诉链接器链接到库。< / p>
像
> gcc test.c -o test -LC:\MinGW\include\SDL2\lib -lSDL2
(我不知道库的名称,因此请将SDL2
更改为相应的名称。)
如果由于加载程序未找到SDL2库而运行程序时出现问题,则可能需要添加另一个选项,告知链接器动态库的位置:
> gcc test.c -o test -LC:\MinGW\include\SDL2\lib -Wl,-rpath=C:\MinGW\include\SDL2\lib -lSDL2
我不知道它是否需要甚至在Windows上使用过。您可能必须将DLL复制到可执行文件所在的目录。