如何在Qt Creator下链接SDL2库

3
我已经编译了最新的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

链接器报告了几个未定义的引用,包括 SDL_Init

这个 qmake 脚本的语法正确吗?我的代码有哪些改进空间? - edition
1个回答

3

您需要将LIBS行更改为以下内容:

LIBS += -L/usr/local/lib -lSDL2

-L 可让您定义链接器查找库以进行链接的路径,而 -l 则定义要链接到哪个库。在 Unix 系统中,名为 ASD 的库由一个名为 libASD.so 的文件表示(在本例中,.so 是共享库,对于静态库则是 .a)。

编辑: 我准备了非常简单的 main.cpp

#include <SDL/SDL.h>

int main()
{
  SDL_Init(SDL_INIT_VIDEO);
  return 0;
}

我需要使用/usr/local前缀构建SDL 2.0.3作为静态库,并且我需要在我的.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

现在它编译得非常顺利。


我们已经发现这并不能解决问题...请看我删除的答案下面的评论。 - CapelliC
谢谢提示,但我没有看到已删除的答案,但我尝试进一步调查,所以请查看我的编辑后的答案。 - Filip Piechocki
干得好,我自己没有时间尝试 :) - CapelliC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接