-3

数時間 Google で調べた後、この問題の解決策がありません。

アンマネージ C++ で DLL を開発しました。これは64ビットコンピューターであるため、そのDLLをSysWOW64フォルダーに配置しました。

一方、DLL に含まれる関数をインポートする C# で開発された Winforms アプリケーションがあります。DllImport("name.dll") を使用していますが、System.DllNotFoundException がスローされます。

ソリューション全体が x64 プラットフォーム用に構成されています。

DLL を実行可能ディレクトリに配置すると、動作します。

開発を簡単にするために、DLL をシステム フォルダーに入れたいと考えています。このプロジェクトを 2 台の異なるコンピューター (デスクトップ PC とノートブック) で開発しています。PC のプラットフォームは 32 ビットですが、ノートブックは 64 ビットで、フォルダーが異なります。

両方のコンピューターでプロジェクトを同期するには、Subversion リポジトリを使用します。もちろん、C++ プロジェクト フォルダーからメインの実行可能ファイルの出力フォルダーに DLL をコピーする Post Build イベントを作成できますが、ノートブックから PC に移動するたびに Post build コマンドを変更する必要があります。

システム フォルダに DLL が見つからない理由がわかりませんか? そして最も重要なことは、それを解決する方法はありますか?

ありがとうハイメ

4

1 に答える 1

4

ソリューション全体が x64 プラットフォーム用に構成されています。

これSysWOW64は、実際には 32 ビットのシステム ディレクトリです。32 ビット プログラムの場合、ファイル システム リダイレクタsystem32SysWOW64.

  • 32 ビット プロセスの場合、システム ディレクトリはSysWOW64.
  • 64 ビット プロセスの場合、システム ディレクトリはsystem32.

これにより、直面している問題が説明されます。

システム ディレクトリを変更するべきではありません。これはシステムに属しており、アプリケーションはそれを変更してはなりません。

于 2015-05-05T21:55:52.173 に答える