Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual Studio 2008中的cl.exe包装器 我在C++中为Cuth>C.exe (VisualStudio编译器)创建了一个包装器。为此,我更改了PATH环境变量,以便Visual Studio首先找到我的cl.exe。在mycl.exe中,我创建了一个进程,该进程使用mycl.exe参数运行真实的cl.exe_C++_Visual Studio 2008_Compiler Construction_Warnings_Createprocess - Fatal编程技术网

Visual Studio 2008中的cl.exe包装器 我在C++中为Cuth>C.exe (VisualStudio编译器)创建了一个包装器。为此,我更改了PATH环境变量,以便Visual Studio首先找到我的cl.exe。在mycl.exe中,我创建了一个进程,该进程使用mycl.exe参数运行真实的cl.exe

Visual Studio 2008中的cl.exe包装器 我在C++中为Cuth>C.exe (VisualStudio编译器)创建了一个包装器。为此,我更改了PATH环境变量,以便Visual Studio首先找到我的cl.exe。在mycl.exe中,我创建了一个进程,该进程使用mycl.exe参数运行真实的cl.exe,c++,visual-studio-2008,compiler-construction,warnings,createprocess,C++,Visual Studio 2008,Compiler Construction,Warnings,Createprocess,这样做的目的是过滤realcl.exe的输出,以删除我们无能为力的警告。我们希望打开“检测64位概率问题”,因为它很棒,但它会发出警告 警告: cl:命令行警告D9035:选项“Wp64”已被弃用,并将在将来的版本中删除 我已经搜索了几天如何删除这个特定的警告,它是而不是一个可以用代码或类似普通警告的选项关闭的警告 问题:Visual Studio运行mycl.exe,然后mycl.exe运行真正的cl.exe,但从那时起,mycl.exe不再接收输出。我已经通过让它调用真实的cl.exe以外的

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

警告:

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

我已经搜索了几天如何删除这个特定的警告,它是而不是一个可以用代码或类似普通警告的选项关闭的警告

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

Visual Studio中的“输出”框中将显示来自
cl.exe
文件的任何输出,但my
cl.exe
不再接收来自真实
cl.exe
文件的任何输出


我正在使用一个管道来处理我的
cl.exe
中的输出,它可以处理除真实
cl.exe
之外的任何东西

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


另外,除了为
cl.exe
创建包装器以消除此警告之外,还有其他解决方案吗?

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

我已经找到了答案

visual Studio中的此环境变量以某种方式用于向实际cl.exe发送信号,以将其输出发送到visual Studio

VS_UNICODE_输出=4209

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


谢谢你的帮助

为什么你这么想摆脱这些警告?“我正在使用管道处理我的cl.exe中的输出”你是说标准输出?如果我能让它工作,这个包装器将被我成千上万的人使用。如果有一个或一百万个警告,那么每个项目在报告中看起来都是一样的。由于这个警告,每个projct现在都显示为有警告。提示我正在使用管道处理来自真实cl.exe的输出。CreatePipe(…),startupInfo.hstOutput=createdPipe,CreateProcess(…startupInfo)@Padawan Learner:微软之所以这么做,至少有几个原因让你无法关闭
/Wp64
弃用警告;其中之一就是这样。相反,您应该通过设置为目标64位系统的编译器运行代码。这是发现64位问题的更好方法
/Wp64
太麻烦了,没有什么用处。谢谢!当这个开关被标记为不推荐时,我真的不理解,因为它会给出警告,否则你永远不会得到警告(但我可以看到模板的问题)。你的包装工作得怎么样?它能达到你的期望吗?它工作得很好。我花了一段时间才弄清它功能的微妙之处。它只增加了大约3%的构建时间,这是可以接受的。它甚至可以与IncredBuild一起工作!从一开始我就认为这是不可能的。