2009-06-04 24 views
1

私が見つけたのはスタックオーバーフローです。私はCで書かれたネイティブdllを持っています。私はVC++(VS 2008)を使ってprojをコンパイルしました.Dllimportを使ってdll関数を呼び出したC#アプリケーションを使っていました。問題は、DLLをロードできないことです。それはdllを読み込むことができないと言います。dllimportがdllを読み込めません

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

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

ありがとうございます。

答えて

1

sysinternalのプロセスモニタを使用して、アプリケーションがdllをロードする場所を確認してください。

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

1

私はこれに一度問題がありました。私は、C#から呼び出す必要があったハードウェアのインターフェイスとして動作するC++ DLLを持っていました。しかし、ハードウェアが接続されていなければ、DllImport呼び出しは失敗します。これは、DLLの初期化関数が失敗を返すため、C#はDLLをロードできないと言っています。 DLLはです。

CコードでDLLを設定するときに何らかのエラーが発生していないことを確認します。

0

Dependency Walkerは、DLLが読み込むために使用するものを分析するのに便利なツールです。 ネイティブ実行可能ファイルの場合は、exeを読み込み、 "Profile"メニューエントリ を使用して、 がロードされた場合に表示されない遅延ロードを使用してロードされたDLLを表示することもできます。

関連する問題