gpt4 book ai didi

c++ - QtCreator 中的 SDL2 undefined reference sdl_Main

转载 作者:行者123 更新时间:2023-11-30 04:04:16 29 4
gpt4 key购买 nike

我正在尝试使用 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): In function `console_main':

/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/main/windows/SDL_windows_main.c:140: undefined reference to `SDL_main' collect2.exe: error: ld returned 1 exit status

我不明白为什么 SDL 在以正确的顺序链接时会给出对 sdl_Main 的 undefined reference 。当没有这样的路径时,我也不知道这个“/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 下载,未经修改,没有补丁。

最佳答案

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

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

CONFIG-= windows
QMAKE_LFLAGS += $$QMAKE_LFLAGS_WINDOWS

关于c++ - QtCreator 中的 SDL2 undefined reference sdl_Main,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23845609/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com