c++ - 尝试链接到 SDL_ttf 共享对象文件时 g++ 中的链接器错误

标签 c++ compiler-construction g++ dynamic-linking

我正在尝试在 Ubuntu 环境中使用 SDL_ttf 开发库。我首先通过以下方式下载开发库:sudo apt-get install libsdl-ttf2.0-dev。 接下来,我在我的代码中导入了头文件:

#include <SDL_ttf.h>

当我用命令编译时:

g++ -g -I /usr/include/SDL Main.cpp -lSDL -lSDL_image -lSDL_ttf land.cpp PerlinNoise.cpp Util.cpp org.cpp Init.cpp `sdl-config --libs

我得到以下输出:

/tmp/ccpLKljA.o: In function `init()':
/home/zoo/Desktop/World-A/Util.cpp:39: undefined reference to `TTF_Init'
/home/zoo/Desktop/World-A/Util.cpp:42: undefined reference to `TTF_Quit'
/home/zoo/Desktop/World-A/Util.cpp:48: undefined reference to `TTF_OpenFont'
/home/zoo/Desktop/World-A/Util.cpp:52: undefined reference to `TTF_Quit'
collect2: ld returned 1 exit status

我知道这是一个链接器错误,但我不知道如何修复它。我知道 -lSDL_ttf 命令没有执行任何操作,因为删除它不会改变任何内容。我尝试引用 .so 文件,但这并没有改变结果。我通过命令做了这个引用:-LlibSDL_ttf-2.0.so.0.6.3。我能够查看 .so 文件,它确实包含上面列出的命令。

最佳答案

您必须将 land.cpp 和其余 CPP 文件放在命令行中的库之前。

关于c++ - 尝试链接到 SDL_ttf 共享对象文件时 g++ 中的链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22572056/

相关文章:

c++ - (C++) 命令行剪刀石头布游戏的 If - Else if 语句

java - Blackberry Screen 类中的 super 构造函数调用

c++ - 我可以从 C++ 程序中调用 Objective-C 类吗?

c++ - 使用自定义分配器调整大小

.net - .NET为什么不对SIMD固有的数学运算使用SIMD而不使用x87?

c++ - 为什么 clang 和 gcc 在这个虚拟继承代码上意见不一?

C++ 获取运行时间和内存使用情况

c++11 - 为什么在g++中-ansi和-std = c++ 11会冲突?

c++ - 如何检查 C++ vector 是否已包含具有特定值的元素(在本例中为结构)?

linux - 将 Linux 源代码解析为抽象语法树