c - 尽管链接正确,但未定义的引用
问题描述
我正在尝试编译以下测试程序:
#include <SDL2/SDL.h>
int main(int argc, char** argv)
{
SDL_Window* window = SDL_CreateWindow("test", 0, 0, 640, 480, 0);
SDL_DestroyWindow(window);
}
我首先在命令行上编译,我正在使用以下命令(稍后我将添加警告选项):
gcc test.c -lmingw32 -lSDL2main -lSDL2
编译此程序后,我收到以下未定义的参考错误:
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\JACOBD~1\AppData\Local\Temp\cceuyYlI.o:test.c:(.text+0x36): undefined reference to `SDL_CreateWindow'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\JACOBD~1\AppData\Local\Temp\cceuyYlI.o:test.c:(.text+0x44): undefined reference to `SDL_DestroyWindow'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../libmingw32.a(main.o):(.text.startup+0xc0): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
如上述错误所示,我目前正在使用来自http://www.mingw.org/的 gcc 9.2.0 。在我的另一台开发机器上,我使用来自https://jmeubank.github.io/tdm-gcc/的 TDM-GCC 5.1.0 版,该测试程序在其他 SDL2 程序中可以正确编译。
我检查了我用 nm 链接的库,发现以下内容有点令人担忧:
nm: effect_position.o: file format not recognized
nm: effect_stereoreverse.o: file format not recognized
nm: effects_internal.o: file format not recognized
nm: load_aiff.o: file format not recognized
nm: load_voc.o: file format not recognized
...
nm: native_midi_win32.o: file format not recognized
我不清楚问题是什么。从我所见,我已将所有库和包含在正确的位置。
解决方案
推荐阅读
- javascript - 按分类列出自定义帖子类型中的所有帖子不起作用
- python - Python:如何创建每次包含 X 字节的数据块
- xml - 批量替换并将 1 添加到 xml 文件中特定文本之间的数字
- java - 如何在休眠中执行不带参数的匿名plsql块?
- asp.net-core - Blazor WebAssembly 托管部署的 URL 重写异常
- django - 使用 django-filter 在 django rest 框架中过滤数据
- sql-server - 嵌套事务如何使用 SQL Server 中的触发器和不同的隔离级别?
- c# - 团结 | 方法返回null(A:执行顺序)
- javascript - 如何删除同一页面上的不同项目
- python - 将字符串字典转换为 numpy 数组字典