我有一个 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/