繁体   English   中英

QtCreator中的SDL2未定义引用sdl_Main

[英]SDL2 undefined reference sdl_Main in QtCreator

我试图使用QtCreator创建一个包含SDL2的项目。 但是SDL无法正确编译,我看不到错误。

我的QtCreator .pro文件

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = Psiora
TEMPLATE = app

SOURCES += main.cpp\
        ui_mainwindow.cpp

HEADERS  += ui_mainwindow.h

FORMS    += ui_mainwindow.ui

INCLUDEPATH += "D:\devel\SDL2-2.0.3\i686-w64-mingw32\include\SDL2"

LIBS += -L"D:\devel\SDL2-2.0.3\i686-w64-mingw32\lib" \
        -lmingw32 \
        -mwindows \
        -lSDL2main \
        -lSDL2

Main.cpp的

#include "ui_mainwindow.h"
#include <QApplication>

#define SDL_MAIN_HANDLED //Let QT Supply WinMain
#include "SDL.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    UI_mainWindow win;
    win.show();

    return app.exec();
}

编译错误

g ++ -Wl,-子系统,Windows -mthreads -o debug \\ Psiora.exe debug / main.o调试/ui_mainwindow.o debug / moc_ui_mainwindow.o -lglu32 -lopengl32 -lgdi32 -luser32 -lqtmaind -LD:\\ devel \\ SDL2- 2.0.3 \\ i686-w64-mingw32 \\ lib -lmingw32 -mwindows -lSDL2main -lSDL2 -LD:\\ devel \\ Qt \\ 5.2.1 \\ mingw48_32 \\ lib -lQt5Widgetsd -lQt5Guid -lQt5Cored

D:\\ devel \\ SDL2-2.0.3 \\ i686-w64-mingw32 \\ lib / libSDL2main.a(SDL_windows_main.o):在函数'console_main'中:

/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/main/windows/SDL_windows_main.c:140:未定义对“ SDL_main”的引用collect2.exe:错误:返回ld 1个退出状态

我不明白为什么SDL在以正确的顺序链接后为什么会给sdl_Main一个未定义的引用。 当没有这样的路径时,我也不知道此“ /Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/main/windows/”来自何处我的计算机,也没有自己添加路径。

我的理解是SDL_Main提供WinMain,但是我希望改用Qt提供的WinMain,因此我定义了SDL_MAIN_HANDLED定义以使用SDL_Main停止SDL。

附加信息:

  • 操作系统:Windows 8.1 Pro 32bit
  • 编译器:MinGW 4.8-Qt安装程序随附的默认版本
  • Qt:5.2.1
  • SDL 2.0.3-直接从libsdl.org下载,未经修改,没有补丁。

将此添加到您的项目文件以解决此问题:

win32:QMAKE_LIBS_QT_ENGTRY -= -lqtmain
win32-g++:DEFINES -= QT_NEEDS_QMAIN

要么

CONFIG-= windows
QMAKE_LFLAGS += $$QMAKE_LFLAGS_WINDOWS

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM