【问题标题】:Main function not called Qt Creator主函数不称为 Qt Creator
【发布时间】: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 &lt;return&gt; 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 更改已强制修改主函数签名。也许还有其他此类差异导致这些跨平台/跨编译器问题?

标签: c++ arrays qt


【解决方案1】:
#include <QApplication>
#include <iostream>

#include "Engine/Window/MainWindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argc);

    std::cout << "Starting application" << std::endl;

    MainWindow w;
    w.show();

    return a.exec();
}

【讨论】:

  • 这并没有解决问题,如果我使用 MinGW 编译器,我想说明它可以工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多