链接SDL2 C项目失败

时间:2018-03-23 16:15:31

标签: c linker mingw sdl-2

我使用SDL2用C编写了一个小游戏。它编译,组装和链接就好了,没有错误或警告。然而,当我尝试在Windows下构建它时,它失败了,因为我缺少头文件。我已经下载并解压缩了MinGW的开发库。我告诉gcc使用搜索头文件,它按预期编译和组装。但它没有联系。然后我将以下内容添加到gcc命令

-LD:\SDL2-2.0.8\x86_64-w64-mingw32\lib -lmingw32 -lSDL2main -lSDL2

现在完整的链接commad看起来像这样

gcc -ID:\SDL2-2.0.8\x86_64-w64-mingw32\lib -LD:\SDL2-2.0.8\x86_64-w64-mingw32\lib -lmingw32 -lSDL2main -lSDL2 *.o

然而它给了我未定义的参考错误。

PS:如果您想出于某种原因查看源代码,可以找到它here

1 个答案:

答案 0 :(得分:1)

编译器(在本例中为gcc)链接时,从左到右评估命令行上的参数。

因为发布的命令行具有对象文件引用左侧的库引用,所以当处理库时,没有不满意的外部引用是“固定的”。所以没有使用图书馆。

修复,引用目标文件,然后引用库

此外,此表达式:-ID:\SDL2-2.0.8\x86_64-w64-mingw32\lib是编译时参数,而不是链接时间参数。

建议使用:

gcc  *.o -LD:\SDL2-2.0.8\x86_64-w64-mingw32\lib -lmingw32 -lSDL2main -lSDL2