【发布时间】:2016-08-12 05:50:58
【问题描述】:
在 Qt Creator 中,我有一个 main.cpp 文件,其中当然包含 int main(int argc, char **argv),在我的 MainWindow.h 文件中,它具有设置窗口的代码,该窗口可以正常工作(我没有按原样发布代码不相干 )。当我尝试使用 msvc 编译器(我已成功设置)时,就会出现问题,因为当我使用 MinGW 编译器时,它会正确运行并设置窗口。但是在我的main.cpp 文件中->
#include <QCoreApplication>
#include <iostream>
#include "Engine/Window/MainWindow.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argc);
std::cout << "Starting application" << std::endl;
MainWindow w;
w.execute();
return a.exec();
}
当我运行应用程序时,我看不到 "Starting Application" 我只看到 "Press <return> to close the window" 任何帮助或提示将不胜感激。
编辑:我还想指出,我只是使用 Qt 的“自动检测”功能来查找这些编译器。
还有我的.pro 文件
QT += core
QT -= gui widgets
CONFIG += c++14
CONFIG += windeployqt
TARGET = BaneEngine_
CONFIG += console
CONFIG += app_bundle
INCLUDEPATH += $$PWD/ExtLibs/include
DEPENDPATH += $$PWD/ExtLibs/include
LIBS += -L$$PWD/ExtLibs/libs
LIBS += -lSDL2main -lSDL2test -lSDL2 -lglew32 -lOpenGL32
TEMPLATE = app
SOURCES += main.cpp \
Engine/Window/MainWindow.cpp
HEADERS += \
Engine/Window/MainWindow.h
【问题讨论】:
-
什么是
w.execute()?你为什么用QCoreApplication而不是QApplication? -
要在 Windows 应用程序中查看控制台输出,请将 CONFIG+=console 添加到您的 .pro 文件中。也许 mingw 构建会自动执行此操作。
-
w.execute() 是一个打开 sdl 窗口的函数。我会将我的 .pro 文件添加到 queston
-
我在 Qt for Android 中遇到了同样的基本问题。在 Qt 5.2 到 5.5 中一切正常,但在 5.7 中失败了。请注意,在 Qt for iOS 中,多次 Apple 更改已强制修改主函数签名。也许还有其他此类差异导致这些跨平台/跨编译器问题?