【问题标题】:Undefined reference to SDL_Init with Qt Creator使用 Qt Creator 未定义对 SDL_Init 的引用
【发布时间】:2013-10-30 18:58:53
【问题描述】:

我正在尝试使用 Qt Creator (Qt 5.1.1) 构建以下基本 SDL2 应用程序。

SDLTest.pro:

TARGET = SDLTest01
CONFIG   += console

TEMPLATE = app

INCLUDEPATH += C:\Users\Martin\code\libs\SDL2-2.0.1\x86_64-w64-mingw32\include
LIBS += -LC:\Users\Martin\code\libs\SDL2-2.0.1\x86_64-w64-mingw32\lib -lSDL2

SOURCES += main.cpp

ma​​in.cpp:

#include <SDL2/SDL.h>

#include <QCoreApplication>
#undef main
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 )
        return 1;

    return a.exec();
}

但我有以下错误:

undefined reference to `SDL_Init'

具有相应参考的相同代码可以使用 SDL 1.2 编译。

有什么想法吗?

【问题讨论】:

  • SDL 真的可以与 QT 一起使用吗?难道他们都不想控制主事件循环吗?
  • 您能说明您的 SDL2“lib”文件夹的内容吗?
  • @japreiss 可以将 SDL 与 Qt 一起使用,只要两者之一用于窗口/事件处理。
  • 您没有正确链接到 SDL。我建议不要同时使用 Qt 和 SDL。任选其一。
  • @MartinDelille 如果您不链接到 SDL2,那就是您得到的错误。 SDL2-2.0.1 中有多个文件夹,您是否为编译器链接到正确的库? (可能是位数不匹配)

标签: windows qt sdl sdl-2


【解决方案1】:

我将答案作为评论发布,但如果将来有人遇到类似问题,这里是解决方案。

错误“未定义的引用”意味着有一个定义的原型,但没有找到定义。大多数情况下,您没有链接到具有定义的库。

在作者的情况下,他正在链接到一个用于 x86_64 的库,但他的目标应用程序是 i686,因此链接器找不到他的目标的引用。为他的目标链接到正确的库解决了他的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多