【发布时间】:2020-04-27 11:47:59
【问题描述】:
我的一个 Win10 桌面在 Visual c++ 编译器(vc142 工具链/msvs2019、Win10)方面存在非常奇怪的问题:每次任何 GUI 应用程序启动 c++ 编译器 (cl.exe) 时,它都会打开新的控制台窗口。
由于编译器正在被 IDE(例如 VisualStudio、CLion、QtCreator 等)使用,它非常没用,因为被调用者(IDE)无法捕获编译的输出,并且 IDE 不显示任何编译输出,特别是在出错的情况下编译消息。显然,这些 IDE 是通过 msbuild 或 cmake 等构建系统间接执行此操作的。无论如何,问题就在那里。
所以 NMake 或 MSBuild 无法正确使用,因为它们在单独的窗口中运行 cl.exe。我必须手动从命令行运行构建过程才能看到错误消息。
相同的工具链可以在其他 Win10 主机上正确使用。我看不出有什么区别...
知道为什么会发生这种情况以及如何解决吗?
附:可能这不是 cl 的问题,而是一些 Windows 终端设置...甚至是安全问题(我不是该主机上的管理员)
【问题讨论】:
-
大胆猜测,但您的
PATH中是否还有另一个cl.exe不是正确的编译器? -
我会检查一下,但一切正常,除了在单独的终端中
-
刚刚检查过 - 仅针对不同目标的 cl 编译器集,全部来自 VS2019 工具链
-
我建议你可以添加以下代码隐藏控制台窗口
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) -
你能解释一下这个原因吗?如果您认为我必须将其添加到我在 IDE 中编译的项目中,这是一个共享库,没有主入口点。你确定理解我的问题吗 - 这不是关于我在新控制台窗口中启动的示例应用程序(因为它是一个库),而是关于在自己的控制台中执行其工作的编译器本身
标签: c++ visual-studio visual-c++ cl.exe