我在Visual Studio 2005中有一个Qt应用程序,它使用这样的链接,当我运行已编译的可执行文件时,它也不会创建命令行终端.\subsystem:windows
我想创建一个命令行模式:当我使用--nogui
命令行参数启动它时,不会显示GUI,但会运行一个简单的命令行程序.由于链接使用/subsystem:windows
,命令行模式不显示任何std::cout
输出,除非我链接我的可执行文件\subsystem:console
.
有没有办法设置编译/链接,以便相同的可执行文件可以呈现GUI窗口或基于命令行参数表现为控制台应用程序?
PS.我使用Qt 4.2.0和Visual Studio 2005,项目是用C++编写的.
我认为这种情况的首选技术是".com"和".exe"方法.在Windows中,从命令行运行程序并且不指定扩展名,查找可执行文件的优先顺序将优先于.exe文件.com.
然后你可以使用技巧让".com"成为stdin/stdout/stderr的代理并启动同名的.exe文件.这提供了允许程序在从控制台调用时以命令行模式执行的行为(可能仅在检测到某些命令行参数时),同时仍然能够作为没有控制台的GUI应用程序启动.
有各种文章描述这一点,例如"如何将应用程序作为GUI和控制台应用程序?" (参见下面链接中的参考资料).
我在google代码上托管了一个名为dualsubsystem的项目,该项目更新了这种技术的旧codeguru解决方案,并提供了源代码和工作示例二进制文件.
我希望这对你有所帮助!