我使用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。
答案 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