c++ - 在 Visual Studio 2005 中基于命令行作为 GUI 应用程序或控制台应用程序启动的可执行文件

标签 c++ visual-studio qt visual-studio-2005

我有一个 Qt应用 Visual Studio 2005它使用 \subsystem:windows 链接,这样当我运行编译后的可执行文件时,它也不会创建命令行终端。

我想创建一个命令行模式:当我使用 --nogui 命令行参数启动它时,GUI 不会出现,但会运行一个简单的命令行程序.由于链接使用 /subsystem:windows,命令行模式不显示任何 std::cout 输出,除非我将我的可执行文件与 \subsystem 链接:控制台

有没有一种方法可以设置编译/链接,使同一个可执行文件既可以显示 GUI 窗口,也可以根据命令行参数充当控制台应用程序?

附言。我使用 Qt 4.2.0 和 Visual Studio 2005,项目使用 C++。

最佳答案

我认为这里情况的首选技术是“.com”和“.exe”方法。在 Windows 的命令行中,如果您运行程序但未指定扩展名,则定位可执行文件的优先顺序将为 .com preferred over a .exe file .

然后您可以使用技巧让“.com”成为 stdin/stdout/stderr 的代理并启动同名的 .exe 文件。这给出了允许程序在从控制台调用时以命令行模式执行的行为(可能仅当检测到某些命令行参数时),同时仍然能够作为没有控制台的 GUI 应用程序启动。

有很多文章对此进行了描述,例如“如何将应用程序制作成既是 GUI 应用程序又是控制台应用程序?” (请参阅下面链接中的引用资料)。

我主持了一个名为 dualsubsystem on google code 的项目更新了该技术的旧 codeguru 解决方案并提供了源代码和工作示例二进制文件。

希望对您有所帮助!

关于c++ - 在 Visual Studio 2005 中基于命令行作为 GUI 应用程序或控制台应用程序启动的可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/772089/

相关文章:

visual-studio - ReSharper 破坏了 "Find"和 "Find in Files"的键盘快捷键

angular - 显示错误 "Can' t 查找名称日期的 Visual Studio 代码”

python - 如何禁用 QTableWidget 中的选择突出显示

c++ - 如何在 vector<vector<class *>> 中存储类对象并通过引用或值访问它们并将它们传递给函数

c++ - 控制台和 GUI 的通用设计

c++ - 随机骰子不重新播种

c++ - 如何用二进制流替换字符串流,以避免强制转换?

wpf - MSIX 使用 Azure SSO 的已安装 WPF 应用程序将无法启动

qt - QDesktopServices::openUrl() 失败并生成路径

C++ qt控制控制台中的光标位置