0

私は C/C++ で書かれたプログラムを取り、いくつかの引数を入力として受け取り、出力として変数を返すように main 関数を変更し、そこから Win32 DLL を作成しました。次に、InterOp を使用して最初の DLL にアクセスする .NET DLL を作成しました。C# アプリに .NET DLL をロードすると、DLL から System.DllNotFoundException が発生します。これは、プログラムにメモリの問題がなく、両方の Win32/.NET dll が同じディレクトリ (別の場所) にあるため、本当に困惑しています。 main 関数を変更しても、コードは実際には変更されていません)。このスレッドで解決策が提供されました。これは、以前の私の最初の質問でした。その答えは正しいと確信していますが、何かが足りないだけです。

私の VS ソリューションはこちらからダウンロードできます。このソリューションには、Win32 DLL、.NET DLL、および .NET DLL を参照する winform アプリの 3 つのプロジェクトが含まれています (ただし、テストしようとすると DLL 例外が発生します)。ヘルプやデバッグのガイダンスをいただければ幸いです。

  • 更新: 以下のすべてのヒント/提案を試しましたが、まったく同じエラーが発生します。作業が簡単になる場合は、上記のハイパーリンクから私の VS ソリューションをダウンロードできます。
4

1 に答える 1

1

/windows/system32 フォルダーに win32 dll を配置したことを確認します (dll 名のみが DllImport に渡される場合)。

または、dll のフル パスを DllImport 属性に渡すこともできます。

Dependency Walkerなどのツールを使用して、依存アセンブリを見逃さないようにします。

于 2012-11-05T19:54:13.330 に答える