1

いくつかのカスタム32ビットdllを使用してUSBデバイスと通信するC#/WPFアプリを開発しています。x86アプリとして開発され、WIXとともにインストールされます。パッケージを64ビットマシンにインストールすると、期待どおりにプログラムファイルがプログラムファイル(x86)にインストールされます。

dllは、WIXを使用してSystemFolderにインストールされます。32ビットマシンでは、これはC:\ Windows\System32を意味します。64ビットでは、最終的にC:\ Windows\SysWOW64になります。これは問題ありませんが、アプリを実行するとdllが見つかりません([DllImport ...]を介してそれらを使用します)。

それで、それらがSystem32またはSysWOW64にあるかどうかにかかわらず、私のアプリにdllを検出させる正しい方法は何ですか?

ありがとうトム

4

2 に答える 2

1

デフォルトのC#アプリの場合、64ビットWindowsでは自動的に64ビットアプリになります(32ビットWindowsではC3のデフォルトは32ビットです)。開発アプリのプロジェクトプロパティに移動し、アーキテクチャを明示的に設定します(私は、現在Studioをセットアップしていません)。64ビットアプリとして実行されている場合、32ビットDLLを使用することはできません。

于 2012-05-24T09:12:38.180 に答える
0

Windows のバージョンに応じて、アプリケーション内の dll が sys32 または wow64 フォルダー内の dll と同じバージョンであるかどうかを確認してください。

dllのファイルサイズから確認できます。

例: system32 の libeay.dll ファイルが、openssl アプリケーションの libeay.dll ファイルとは異なる dll を持っていたため、この問題に直面しました。sys32 のものを openssl にコピーしたところ、すべてうまくいきました。

于 2020-01-06T11:35:33.467 に答える