c++ - Qt Creator下如何链接SDL2库

标签 c++ qt sdl static-linking sdl-2

我编译了最新的 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/

相关文章:

c++ - Node.JS 安装 CLD

c++ - 在 C++ 中通过指针捕获异常

c++ - QT Sqlite 无法获取行。数据库锁定

c++ - SDL_Window 没有命名类型

c++ - OpenGL 显示空白屏幕。也许是由于着色器?

c++ - 调用SDL_CreateTextureFromSurface时SDL崩溃

c++ - 如何将std::vector <std::vector <double >>转换为Torch::Tensor?

c++ - 将对象传递给以指针为参数的函数

c++ - 在 QWebView 中设置文本输入焦点

c++ - 如何枚举Qt中所有的QObject类?