1

Stack Overflow は、私たちのすべての説明に最適なグループの 1 つです。C で記述されたネイティブ dll があります。VC++ (VS 2008) を使用してプロジェクトをコンパイルしました。C# アプリケーションを使用して、Dllimport を介して dll 関数を呼び出しました。問題は、dll のロードに失敗することです。dllをロードできませんと表示されます。

dll とアプリケーションの両方を x86 から x64 のプラットフォームにコンパイルしました。この問題を解決するために皆さんが私を助けてくれれば、本当に素晴らしいことです。

dll がロードされていない理由を確認する可能性はありますか。

前もって感謝します。

4

3 に答える 3

1

sysinternal の Process Monitor を使用して、アプリケーションがどこから dll をロードしようとしているかを確認してください。

LoadLibraryの Win32 ドキュメントは、dll の検索方法の詳細にリンクしています。

于 2009-06-04T10:27:20.957 に答える
1

これらの線に沿って、一度これに問題がありました。ハードウェアへのインターフェイスとして機能する C++ DLL があり、C# から呼び出す必要がありました。ただし、ハードウェアの一部が接続されていない場合、DllImport の呼び出しは失敗します。これは、DLL の初期化関数が失敗を返したためです。C# は DLL をロードできないと言っただけで、場所と関係がない可能性があります。 DLLはです。

C コードで DLL をセットアップしているときに、何らかのエラーが発生していないことを確認してください。

于 2009-06-04T10:32:04.910 に答える
0

Dependency Walkerは、dll がロードに使用するものを分析するための優れたツールです。ネイティブ実行可能ファイルの場合、exe をロードし、「プロファイル」メニュー エントリを使用して、遅延ロードを使用してロードされた dll を表示することもできます。これは、dll だけがロードされた場合には表示されません。

于 2009-06-08T11:48:52.623 に答える