【发布时间】:2014-03-22 00:58:22
【问题描述】:
我正在尝试在 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 文件,它确实包含上面列出的命令。
【问题讨论】:
-
我认为您不需要 -I /usr/include/SDL。而且我假设最后有一个完成 ` 只是错过了。也许尝试在文件之前移动 sdl 配置,而不是最后?当我编译时我使用
sdl-config --cflags,当我链接我使用sdl-config --libs,也许尝试两者兼而有之。只是一些建议。 -
尝试了您的建议。无济于事。我需要 -I 来引用头文件,删除它会导致它不知道头文件存在。
-
很好奇,我不需要它(同一个库,Lubuntu),我认为
sdl-config --cflags为我做了包含目录。咳咳,不知道怎么回事。尝试将 SDL_ttf 库所在的搜索路径包括在内,因为我能想到的就是破解。
标签: c++ compiler-construction g++ dynamic-linking