我试图使用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,-subsystem,windows -mthreads -o debug \ Psiora.exe debug / main.o debug / 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'colle2.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 32位
-
编译器:MinGW 4.8 - Qt安装程序提供的默认值
-
Qt:5.2.1
-
SDL 2.0.3 - 直接从libsdl.org下载,未修改,没有补丁 .
1 回答
将其添加到项目文件中以解决此问题:
要么