Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.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 2010 在Windows 2012上使用Visual Studio 2010生成MIDL2398错误 当我尝试编译一个使用COM的Visual C++(Visual Studio 2010)项目时,我看到了MIDL23 98错误。此项目在我的Windows 7 developer计算机和Windows Server 2008构建计算机上构建得非常好,但在Windows Server 2012构建计算机上构建得不好_Visual Studio 2010_Com - Fatal编程技术网

Visual studio 2010 在Windows 2012上使用Visual Studio 2010生成MIDL2398错误 当我尝试编译一个使用COM的Visual C++(Visual Studio 2010)项目时,我看到了MIDL23 98错误。此项目在我的Windows 7 developer计算机和Windows Server 2008构建计算机上构建得非常好,但在Windows Server 2012构建计算机上构建得不好

Visual studio 2010 在Windows 2012上使用Visual Studio 2010生成MIDL2398错误 当我尝试编译一个使用COM的Visual C++(Visual Studio 2010)项目时,我看到了MIDL23 98错误。此项目在我的Windows 7 developer计算机和Windows Server 2008构建计算机上构建得非常好,但在Windows Server 2012构建计算机上构建得不好,visual-studio-2010,com,Visual Studio 2010,Com,我找到了这个关于各种MIDL编译器错误的网站: 但是,我尝试了它对MIDL2398的建议,我验证了“midlc.exe”与“midl.exe”在同一目录中,并且两者都是相同的版本(都是文件版本:7.0.555.1产品版本:6.1.7600.16385,来自Windows SDK v7.1) 我猜这与Windows Server 2012有关,但我不知道 有人能让Windows SDK v7.1 MIDL编译器在Windows Server 2012上运行吗?或者,有人知道MIDL2398的其他原

我找到了这个关于各种MIDL编译器错误的网站:

但是,我尝试了它对MIDL2398的建议,我验证了“midlc.exe”与“midl.exe”在同一目录中,并且两者都是相同的版本(都是文件版本:7.0.555.1产品版本:6.1.7600.16385,来自Windows SDK v7.1)

我猜这与Windows Server 2012有关,但我不知道


有人能让Windows SDK v7.1 MIDL编译器在Windows Server 2012上运行吗?或者,有人知道MIDL2398的其他原因吗?

我找到了问题所在

我在构建服务器上安装了sysintransesuite(),然后使用进程监视器(procmon)查看MIDL.exe正在尝试和失败的操作

在我的例子中,原来在C:drive的根目录下有一个名为“Program”的文件,所以这个文件的路径是“C:\Program”。我不知道是什么或为什么,但MIDL.exe正在对该文件进行处理。我将文件重命名为“Program--MW”,MIDL2398错误消失了


如果其他人遇到MIDL2398错误,我建议您也使用SysInternals的进程监视器,为进程名称--Contains--midl添加一个过滤器,运行编译器并检查进程监视器日志中的错误和奇怪行为。这对我有用

在VS2012上,midl错误是由在C驱动器下创建文件程序的com0com安装程序引起的。如前所述,这会干扰MIDL

文件C:\程序具有以下内容。只需将此文件重命名为其他文件,例如:C:\u程序会使Midl感到高兴

DIALOG: {
SetupOpenInfFile(C:\WINDOWS\system32\com0com.inf) on line 0
ERROR: 2 - The system cannot find the file specified.


} ... 

其他答案通常是正确的。具体来说,在我的案例中,那个该死的文件在文件夹层次结构中的位置更靠下,这导致midl失控。我在Windows环境中使用了一个Cygwinshell,下面是一个完整的可完全重放的屏幕播放视频,介绍了问题和解决方案


在Visual Studio 2010命令提示符下,键入“where midl*.exe”,并验证是否仅找到这两个文件。SysInternals的ProcMon是验证是否使用了正确的EXE文件的另一种方法。我在正在构建的项目的预构建事件中这样做了,该命令为我提供了指向Windows SDK v7.1 midl EXE的路径,这正是我所期望的。我还更改了项目设置,尝试使用Windows SDK v7.0A(包含在Visual Studio 2010中),where命令正确报告了midl EXEs的v7.0A版本的路径,但无论我是根据Windows SDK v7.0A还是v7.1编译,我仍然会收到相同的midl错误。一位同事在同一台Windows 2012虚拟机上尝试使用Windows SDK的版本8进行编译,但也失败了。我遇到了完全相同的问题,谢谢!不知道名为program的文件是怎么来的我知道你有。虽然该报告已于2012年关闭,但我可以确认Visual Studio 2013 update 5中仍然存在该问题。在我的例子中,文件
C:\Program
是由我们的一个内部实用程序创建的,它无法处理带有空格的路径-它将'C:\Program Files\…'截断为简单的'C:\Program',然后愉快地将内容写入该文件。您好,2017年开始!Visual Studio 2015仍然存在此问题,解决方案也有帮助!您好,从2020年到2019年,不知何故得到了相同的程序文件(0字节),删除它解决了这个问题。太棒了!重命名文件c:\Program,让我的生命安全!