0

cl.exe我在 C++ 中为(Visual Studio 编译器)创建了一个包装器。为此,我更改了PATH环境变量,以便 Visual Studio 找到我的cl.exe第一个。然后,在我的中,我创建了一个使用我得到的参数cl.exe运行真实的进程。cl.execl.exe

这样做的目的是过滤真实的输出cl.exe以删除我们无能为力的警告。我们想要“检测 64 位概率问题”,因为它很棒,但它会发出警告。

警告:

cl:命令行警告 D9035:选项“Wp64”已被弃用,将在未来版本中删除

我已经搜索了几天有关如何删除此特定警告的信息,这不是您可以使用代码或正常警告之类的选项关闭的警告。

问题:Visual Studios 运行 my cl.exe,然后 mycl.exe运行 real cl.exe,但从那时起 mycl.exe不再接收输出。我已经通过让它调用真实之外的东西来测试它,cl.exe并且我cl.exe可以完全控制输出......

任何一个文件的任何输出cl.exe都显示在 Visual Studio 的输出框中,但我cl.exe不再接收来自真实cl.exe...

我正在使用管道来处理我的输出cl.exe,它适用于除真实之外的任何东西cl.exe

为什么我不cl.exe管理输出?Visual Studio 是否会忘记我cl.exe并以某种方式将自己附加到真实的?

cl.exe另外,除了创建一个包装器来消除这个警告之外,还有其他解决方案吗?

4

2 回答 2

1

我已经想通了。

这个来自视觉工作室的环境变量以某种方式用于向真正的 cl.exe 发送信号以将其输出发送到视觉工作室。

VS_UNICODE_OUTPUT=4209

清除它允许我的应用程序再次处理输出。

谢谢你的帮助...!

于 2011-09-12T15:23:52.717 回答
0

看起来您正在重定向“真实” cl.exe stdout,但不是stderr。这stderr正是人们期望编译器警告出现的地方。

于 2011-09-11T02:07:30.917 回答