【问题标题】:Non Qt console app in Qt CreatorQt Creator 中的非 Qt 控制台应用程序
【发布时间】:2011-09-08 22:55:57
【问题描述】:

我想在 Qt Creator 中创建下面的简单控制台应用程序:

#include <iostream>

int main(int argc, char* argv[])
{
   std::cout << "Hello WOrld";

   return 0;
}

我在 SO 上看到了一些可能的重复项,我在运行设置中勾选了“在终端中运行”选项。 CTRL+R 确实会弹出一个控制台窗口,但它没有显示“Hello World”,只是“按 Enter 退出”。

以上是通过创建一个空项目。

我尝试创建一个“Qt 控制台应用程序”来生成以下代码。这确实工作正常,但我想要上面的简单非 Qt 版本。

#include <QtCore/QCoreApplication>
#include <iostream>

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

    std::cout << "Hello World";

   return a.exec();
}

【问题讨论】:

  • 我忘了补充,我在 Win Xp 上,排除了其他一些重复的建议。
  • 也排除了我的答案。 :) 我或多或少地假设了 sensible 控制台程序的用法 - Windows 应用程序不一定具有标准管道,除非您明确声明它具有它们。

标签: qt windows-xp qt-creator


【解决方案1】:

除了勾选“在终端中运行”之外,您还需要将“CONFIG += 控制台”添加到您的 .pro 文件中(如果您使用的是 qmake)。

TEMPLATE = app

CONFIG += console

SOURCES += main.cpp

【讨论】:

    【解决方案2】:

    在很长一段时间后再次尝试 Qt 后,它现在可以工作了。项目文件默认具有“CONFIG -=qt”。我不确定这是否能解决当时的问题,但这是我能看到的唯一区别。

    完整的 .pro 文件:

    TEMPLATE = app
    CONFIG += console
    CONFIG -= qt
    
    SOURCES += main.cpp
    

    【讨论】:

      【解决方案3】:

      我在该示例中看到的唯一错误是流未刷新(请将 std::cout 行更改为:

      std::cout << "Hello World" << std::endl;
      

      但是,这不太可能是您遇到的问题,尽管我在http://www.richelbilderbeek.nl/CppQtHelloWorldConsole.htm 找到的以下示例暗示这确实是一个缓冲区处理问题,其中 QtCreator 对缓冲做出了一些假设。 (请注意,该 url 添加了一个 std::cin.get() 调用,这会强制应用程序暂停,因此,您肯定会看到一些输出)。

      【讨论】:

      • 这还没有成功。 cin.get() 也不需要,现在我只需要按两次回车即可退出。我仍然没有得到 Hello WOrld 输出。
      • 尝试在普通控制台窗口中运行它,而不是在 QTCreator 的控制台中,假设有区别。
      【解决方案4】:

      如果您偶然发现了这个线程,因为您的应用程序立即退出并且控制台只显示“Press enter to exit”:

      如果您从 QtCreator 启动它并且它找不到相关的 DLL,这就是您的应用程序的行为方式(顺便说一句,这非常无用)。要找出究竟缺少什么,您可以在没有 QtCreator 的情况下启动您的应用程序。从属 DLL 必须位于此处列出的位置之一http://msdn.microsoft.com/de-de/library/7d83bc18.aspx

      【讨论】:

        猜你喜欢
        • 2012-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-22
        相关资源
        最近更新 更多