【发布时间】: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