私のコンピューターは Windows 7 X64 Enterprise Edition を実行しています。Visual Foxpro OLEDB ドライバーを使用しているため、実行可能ファイルには x86 モードが必要です。このexeが使用するライブラリDLLを「X86」としてコンパイルする必要があると思いました。ただし、「Any CPU」でコンパイルされた DLL は動作するようで、別の場所で使用され、2 つのコピーを維持する必要がないため、非常に便利です。それがどのように機能するのか疑問に思っています。このまま続けるべきですか?
1479 次
3 に答える
2
これで問題ありません。実行可能ファイルが x86 を対象としてコンパイルされている限り、「任意の CPU」を対象とするアセンブリは x86 として読み込まれます。
x64 を明示的にターゲットとするアセンブリを読み込むことはできません。これは、32 ビット アプリケーションでは機能しないためです。
于 2010-07-21T00:45:09.450 に答える
2
プロセスが x64 または x86 の場合、すべての CPU DLL は x86 または x64 に JIT コンパイルされます。exe が x86 としてコンパイルされている限り、DLL は x86 として JIT されます。exe が x64 の場合、DLL は x64 として JIT されます。
于 2010-07-21T00:46:26.450 に答える
1
決定は、.exe が読み込まれるときに行われます。アセンブリ メタデータ ヘッダーの 32BIT フラグは、CLR の 32 ビットと 64 ビットのどちらが読み込まれるかを決定します。そして、最も重要なのは、x86 または x64 JIT コンパイラーです。その後、JIT コンパイラは、後でロードされる DLL のビット数に関係なく、適切なフレーバーのマシン コードを生成します。
したがって、EXE のターゲット プラットフォーム設定のみが問題になります。
于 2010-07-21T01:08:28.900 に答える