运行SDL程序时出现未定义符号错误

运行SDL程序时出现未定义符号错误

我最近开始使用 SDL,并按照网上的一些教程操作。我运行了一个基本的测试程序,它编译得很好,直到最近运行得很好。大约两天前开始,尝试运行二进制文件(同一个二进制文件,未重新编译)会引发以下错误:

./sdltest: symbol lookup error: /usr/local/lib/libSDL-1.2.so.0: undefined symbol: _XGetRequest

我确信自从程序停止工作以来我没有安装或删除任何东西。我正在运行 12.10(在我收到此错误之前就一直在运行,所以我很确定这不是 12.10 的错误),并且我一直在使用以下命令进行编译(从我的 makefile 中提取):

g++ -c -o main.o main.cpp
g++ -c -o CApp.o CApp.cpp
g++ main.o CApp.o -o sdltest -lSDL

有人知道哪里出了问题吗?我该怎么做才能修复它?

答案1

仍然不确定为什么 SDL1.2 会发生这种情况,但我怀疑可能与以下内容有关:

我删除了 SDL1.2,转而下载了 SDL2。原来,2012 年对 X11 的更新为 _XGetRequest 添加了一个动态符号,这就是导致我在 SDL2 中出现问题的原因。为了解决这个问题,我从官方 Mercurial 存储库下载并安装了 SDL2,而不是从 Ubuntu 包管理器下载并安装了 SDL2。

答案2

您可能会发现这个基于 Slackware 的响应对类似问题很有帮助。它已解决。

https://www.linuxquestions.org/questions/slackware-14/libsdl-1-2-so-0-11-4-from-slackware64-current-undefined-symbol-_xgetrequest-4175456708/

相关内容