我在C++中为cl.exe ( Visual编译器)创建了一个包装器。为此,我更改了PATH环境变量,以便Visual首先找到我的cl.exe。在我的cl.exe中,我创建了一个进程,它使用我的cl.exe获得的参数运行真实的cl.exe。
这样做的目的是过滤来自实际cl.exe的输出,以删除我们无法处理的警告。我们希望“检测64位概率问题”,因为它是伟大的,但它发出了一个警告。
警告:
cl :命令行警告D9035 :选项'Wp64‘已被废弃,并将在以后的版本中删除
我已经搜索了几天关于如何删除这个特定的警告,它是而不是警告,您可以使用代码或类似于普通警告之类的选项关闭它。
Problem:视觉工作室运行我的cl.exe,然后cl.exe运行真正的cl.exe,但从那时起,cl.exe就不再接收输出了。我通过让它调用真正的cl.exe以外的东西来测试它,我的cl.exe完全控制了输出.
任何一个cl.exe文件的输出都显示在Visual的输出框中,但是我的cl.exe不再接收来自真实cl.exe的任何输出.
我使用管道来处理我的cl.exe中的输出,它可以处理除了真正的cl.exe之外的任何东西。
为什么我的cl.exe不管理输出?Visual是否忘记了我的cl.exe,并以某种方式将自己附加到了真实的上?
此外,除了为cl.exe创建一个包装器以消除此警告之外,还有其他解决方案吗?
发布于 2011-09-12 15:23:52
我已经想明白了。
这个来自视觉工作室的环境变量以某种方式被用来向真实的cl.exe发出信号,将其输出发送到可视化工作室。
VS_UNICODE_OUTPUT=4209
清除它可以让我的应用程序再次处理输出。
谢谢你的帮助.
发布于 2011-09-11 02:07:30
看起来您重定向的是“真正的”cl.exe stdout,而不是stderr。而stderr正是人们所期望的编译器警告的地方。
https://stackoverflow.com/questions/7362701
复制相似问题