我编译了最新的 SDL2 库,从“官方”mercurial 存储库获取,并按照 Ubuntu/Linux 构建的说明进行操作。
但是 Qt creator 无法链接静态构建的库。这是 qmake 脚本:
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
unix:!macx: LIBS += -L/usr/local/lib/libSDL2.a
INCLUDEPATH += /usr/local/include
SOURCES += main.cpp
链接器报告了几个 undefined reference ,包括 SDL_Init
。
最佳答案
您必须将 LIBS 行更改为:
LIBS += -L/usr/local/lib -lSDL2
as -L
允许您定义链接器查找要链接的库的路径,而 -l
定义要链接到哪个库。在 Unix 系统上,名为 ASD
的库由 libASD.so
文件表示(在此示例中,.so
用于共享库,在您的情况下有 .a
因为它是静态库)。
编辑:
我准备了非常简单的main.cpp
:
#include <SDL/SDL.h>
int main()
{
SDL_Init(SDL_INIT_VIDEO);
return 0;
}
将 SDL 2.0.3 构建为带有 /usr/local
前缀的静态库,我需要将另外 2 个库添加到我的 .pro
文件中以对其进行编译。在这里:
TEMPLATE = app
CONFIG += console
CONFIG -= qt
CONFIG -= app_bundle
SOURCES += main.cpp
LIBS += -L/usr/local/lib -lSDL2 -ldl -lpthread
INCLUDES += /usr/local/include
现在它可以完美编译。
关于c++ - Qt Creator下如何链接SDL2库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25423630/