SDL2在QtCreator中未定义引用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:develSDL2-2.0.3i686-w64-mingw32includeSDL2"
LIBS += -L"D:develSDL2-2.0.3i686-w64-mingw32lib"
-lmingw32
-mwindows
-lSDL2main
-lSDL2
主要.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\Piora.exe debug/main.o debug/ui_mainwindow.o debug/moc_ui_mainwindow-o-lglu32-lopeng32-lgdi32-luser32-lqtmind-LD:\devel\SDL2-2.0.3\i686-w64-mingw32\lib-lming32-mwindows-lSDL2main-lSDL2-LD:\dvel\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/sloken/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/sloken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/main/windows/"是从哪里来的,我自己也没有添加路径。
我的理解是SDL_Main提供WinMain,但我希望使用Qt提供的WinMain,因此我定义了SDL_Main_HANDLED定义来停止SDL使用SDL_Main。
附加信息:
- 操作系统:Windows 8.1 Pro 32位
- 编译器:MinGW 4.8-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
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- SDL 窗口不会弹出
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 函数是否可以访问传递给main()的参数
- 在main()之外初始化std::vector会导致性能下降(多线程)
- SDL 操纵杆按钮按下/C++
- 我的 int main() 中出现堆栈溢出错误
- VSCode IntelliSense无法识别SDL框架的SDL_image扩展库
- C++变量名(可以将 main 声明为变量,但对于其他函数名称则不然)
- 当我尝试在 Main 中调用插入函数时,它不是取数字?
- File.cpp.o:OpenPose 标志 CMakeFiles/.. 的多重定义/main.cpp.o:首先在这里定
- SDL 项目的调试错误"没有可用于 main() 的源代码"
- c++程序和SDL中的main()冲突
- 在XCODE 7上添加SDL 1.2.15框架:2次类main在编译时给出错误
- 使用SDL库时出现链接器错误:_main已在main.obj中定义