7

COMを使用するVisualC++(Visual Studio 2010)プロジェクトをコンパイルしようとするたびに、MIDL2398エラーが表示されます。このプロジェクトは、私のWindows7開発者マシンとWindowsServer 2008ビルドマシンで完全に正常にビルドされますが、WindowsServer2012ビルドマシンではビルドされません。

さまざまなMIDLコンパイラエラーに関する次のWebサイトを見つけました:http://blog.yezhucn.com/midl/compiler_errors.htm

しかし、MIDL2398の提案を試してみたところ、「midlc.exe」が「midl.exe」と同じディレクトリにあり、両方が同じバージョンであることが確認されました(両方ともファイルバージョン:7.0.555.1製品バージョン:6.1.7600.16385) 、Windows SDK v7.1から)。

Windows Server 2012と関係があると思いますが、わかりません。

誰かがWindowsSDKv7.1MIDLコンパイラをWindowsServer2012で動作させることができましたか?または、MIDL2398を引き起こしている可能性のある他の原因を誰かが知っていますか?

4

3 に答える 3

15

私は問題を理解しました。

SysInternalsスイート(http://technet.microsoft.com/en-US/sysinternals)をビルドサーバーにインストールし、Process Monitor(procmon)を使用して、MIDL.exeが何を実行しようとして失敗したかを確認しました。

私の場合、C:ドライブのルートに「Program」という名前のファイルがあることが判明したため、このファイルへのパスは「C:\Program」でした。何が原因なのかわかりませんが、MIDL.exeがこのファイルを使って何かをしていました。ファイルの名前を「Program--MW」に変更すると、MIDL2398エラーがなくなりました。

他の誰かがMIDL2398エラーに遭遇した場合は、SysInternalsのProcess Monitorも使用し、Process Name --Contains --midlのフィルターを追加し、コンパイラーを実行して、ProcessMonitorログでエラーや奇妙な動作を調べることをお勧めします。それは私のために働いた!

于 2012-11-13T23:57:50.383 に答える
2

VS2012では、midlエラーは、Cドライブの下にファイルProgramを作成したcom0comインストーラーが原因で発生していました。これは、前述のようにMIDLを台無しにしています。

ファイルC:\Programには次のものがあります。このファイルの名前を別の名前に変更するだけです。例:C:__ Programは、Midlを幸せにします。

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


} ... 
于 2016-07-11T23:56:22.573 に答える
0

他の答えは一般的に真実です。具体的には、私の場合、そのいまいましいファイルの存在はフォルダ階層のさらに下にあり、midlが混乱します。私はWindows環境でCygwinシェルを使用しました。以下は、問題と解決策の完全に再生可能なスクリーンキャストビデオです。

https://asciinema.org/a/W2wEnv4y8nWHNWl5P3NIw8GnF

于 2018-12-13T13:37:46.833 に答える