【问题标题】:undefined reference to `SDL_Init', linking SDL to program未定义对“SDL_Init”的引用,将 SDL 链接到程序
【发布时间】:2020-01-02 13:59:19
【问题描述】:

我第一次开始使用 SDL 库,我使用 apt-get install 将它下载到 windows 子系统 (Ubuntu)。当我从 SDL 库调用函数然后运行 ​​makefile 时,我会看到:

/home/display.c:13: undefined reference to `SDL_Init'
/home/display.c:14: undefined reference to `SDL_GetError'
/home/display.c:17: undefined reference to `SDL_CreateWindow'
/home/display.c:19: undefined reference to `SDL_GetError'
/home/display.c:22: undefined reference to `SDL_CreateRenderer'
/home/display.c:24: undefined reference to `SDL_GetError'

makefile 看起来像:

gcc -Wall -Werror -Wextra -Wunused -std=gnu99  -g -O0 -Wpedantic -lpthread -lSDL2main -lSDL2

我认为问题出在链接上,编译器找不到 SDL 所在的位置。但是,如果是这种情况,应该会出现一个错误,指出找不到#include SDL2/SDL.h。这可能是安装问题还是我在生成文件中链接 SDL 的方式有问题?

【问题讨论】:

  • 使用库时,您需要了解构建 C 程序的两个独立步骤:编译和链接。如果编译器 找不到一些头文件,你会得到关于丢失头文件的错误。您得到的是来自 linker 的错误,无法解析对 SDL_... 的引用。也许它需要一些帮助才能找到库文件,例如libSDL2.a

标签: c sdl


【解决方案1】:

我放置标志的顺序不正确。库应该在 .c 和 .h 文件之后。

【讨论】:

  • 请编辑您的问题,看到问题下方左侧的这个小链接了吗?不要添加信息和更正作为答案。
  • @thebusybee SO 鼓励自我回答stackoverflow.com/help/self-answer 尽管我投票结束,因为问题是一个错字(并且问题缺乏完整的链接命令来查看这个)。
  • @LegendofPedro 哦,好吧,我将答案误解为补充。 +1 关闭。
猜你喜欢
  • 2015-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-16
  • 1970-01-01
相关资源
最近更新 更多