我最近开始使用 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 的响应对类似问题很有帮助。它已解决。