【问题标题】:Eclipse: SDL libraries cause undefined reference despite linkingEclipse:尽管有链接,SDL 库仍会导致未定义的引用
【发布时间】:2019-07-18 10:50:09
【问题描述】:

我正在尝试使用 MinGW(32 位版本)作为编译器并包括 SDL2 库来设置 Eclipse。来自 Codeblocks 我已经让它们在我的系统上运行,但决定切换到 Eclipse。提取和链接相关库后,我可以使用 SDL2 主库中的函数而不会出错。但是,额外的库会导致问题。

这是我的链接器的设置: linker

包含如下库不会产生编译器错误:

#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <SDL2/SDL_ttf.h>

但是,从库中调用函数会: undefined reference error

c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe:    C:\eclipse_workspace\sdl_final\Debug/../src/sdl_final.cpp:338: undefined reference to `TTF_Quit'
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: C:\eclipse_workspace\sdl_final\Debug/../src/sdl_final.cpp:339: undefined reference to `IMG_Quit'

所有 MinGW 文件都在 C:/MinGW 中。 SDL2 和其他库的头文件(如 SDL_image.h 等)位于 C:\MinGW\include\SDL2 中。 库文件(libSDL2_image.a 等)位于 C:\MinGW\lib 中。

SDL 的“bin”目录中的各个文件和我复制到系统目录的其他库。 (Win10,SysWOW64)。我还确定我使用的是 32 位 SDL 库。

我完全不知道问题出在哪里,尤其是因为我可以很好地调用 SDL2 标准库中的函数。有人能指出我正确的方向吗?

【问题讨论】:

  • 图书馆进入lib,而不是include,你的图书馆搜索路径错误。
  • 你自己编译了SDL2和SDL2_ttf吗?如果是这样,你能用nm 来证明TTF_Quit 存在于SDL2_ttf.dll 中吗?
  • 不,我自己没有编译它们 - 我从 SDL 站点的相应存档文件中原封不动地提取它们。
  • 您可能将您的 MinGW 代码与为 Visual Studio (VC) 构建的库混淆了。下载 SDL2_ttf 的 MinGW 开发版本并尝试一下。
  • 感谢您的帮助!我重新下载了 SDL_2ttf 和 SDL2_image 库的文件(仔细检查他们的名字中有 mingw.tar.gz)并替换了旧文件并重新启动了 Eclipse。问题依旧,同样的错误代码。我也尝试将链接器库路径更改为“C:\MinGW\lib”,同样的错误代码。

标签: c++ eclipse-cdt sdl-2 mingw32


【解决方案1】:

我对 MinGW、Eclipse 和所有上述 SDL2 库进行了全新安装 - 其中一个步骤肯定已经解决了这个问题,尽管我无法确定它一定在哪里。我想最有可能的情况是错误地提取了一个 64 位库,而它应该是 32 位库。

【讨论】:

  • 很高兴听到这个消息!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-11
  • 1970-01-01
  • 2012-12-06
相关资源
最近更新 更多