使用MinGW和Sublime Text设置SDL2

时间:2013-09-19 13:49:58

标签: c undefined sublimetext3 winmain sdl-2

当我在我的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

1 个答案:

答案 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复制到可执行文件所在的目录。