【问题标题】:Linker error in g++ while trying to link to SDL_ttf shared object files尝试链接到 SDL_ttf 共享对象文件时 g++ 中的链接器错误
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多