windows - Qt Creator 对 SDL_Init 的 undefined reference

标签 windows qt sdl sdl-2

我正在尝试使用 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 进行编译。

有什么想法吗?

最佳答案

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

错误“ undefined reference ”意味着存在定义的原型(prototype),但找不到定义。最常见的是,您没有链接到具有定义的库。

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

关于windows - Qt Creator 对 SDL_Init 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19691553/

相关文章:

windows - 从 cmd 登录 Bash 并在一行中运行命令

python-3.x - 在 Windows\Linux CentOS for Python3 上安装 quickfix 模块

javascript - Mac/Windows 在 Javascript 中弹出虚拟键盘

windows - 如何在 Windows CMD 中一行运行两个命令?

timer - 用于创建计时器的 Vala/SDL 回调

c++ - 如何将 OpenSSL 包含在 Linux 上的 Qt 程序中?

qt - 如何将QMenuBar添加到QWizardPage?

c++ - 在 Qt 中更改 XML 标记的属性值

c++ - glGetString(GL_VERSION) 返回 1.1.0,即使卡支持 2.1

c++ - C/C++ 是否有使用相对路径的跨平台方式?