1

Visual Studio 2010 を使用してアンマネージ C++ で記述したドライバーがあります。64 ビット Windows 7 で DLL をコンパイルする場合、ビルド後の手順は次のとおりです。

echo Copying $(TargetFileName) to the OS's 64-bit system folder ...
xcopy $(TargetPath) $(SystemRoot)\System32\. /Y /Q

ただし、dll は代わりに $(SystemRoot)\SysWOW64\ にコピーされます。これは、32 ビット アセンブリにのみ発生すると思われます。

しかし!Windows エクスプローラーを使用するか、コマンド シェルから xcopy を使用して dll を System32 にコピーすると、dll は System32 フォルダーに正しく配置されます。私は何を間違っていますか?Visual Studio が 32 ビット プログラムであり、POST-BUILD イベントがその 32 ビット プロセスのコンテキストで実行されるためですか?

4

2 に答える 2

0

変数 SystemRoot は、呼び出しプログラムに対応して展開されます。

呼び出しプログラム (devenv.exe) は 32 ビット プログラムであるため、SysWOW64 に置き換えられます。

于 2012-07-26T17:53:36.837 に答える