2

この質問の投稿者とまったく同じ問題が発生しています。別のDLL(これもソリューションの一部です)で関数を呼び出そうとしているVisual Studio C#プロジェクトがあります。

DLLはC++のものであり、私が呼び出そうとしているエクスポートされた関数は、C#で次のように宣言されています。

[DllImport("SomeDLL.dll")]
private extern static IntPtr SomeFunction(IntPtr someVar1, IntPtr someVar2, bool someVar3);

C#から関数を呼び出そうとすると、デバッガーのコンソール出力に次のように表示されます。

' MyApp.exe ':ロード済み'C:\ SomePath \ Build \ Eddy \ Debug \ SomeDLL.dll''MyApp.exe' :アンロード
済み'C:\ SomePath \ Build \ Eddy \ Debug \ SomeDLL.dll''MyApp.exe
':ロード済み' C:\ SomePath \ Build \ Eddy \ Debug \ SomeDLL.dll'
' MyApp.exe':アンロード済み' C:\ SomePath \ Build \ Eddy \ Debug \ SomeDLL.dll '

そして、次のエラーダイアログが表示されます。

DLL'SomeDLL.dll'を読み込めません:指定されたモジュールが見つかりませんでした。(HRESULTからの例外:0x8007007E)

問題のコードは、同僚のWindowsXPマシンで正常に機能します。ソリューションには、正常に動作する別のC++DLLもあります。

4

1 に答える 1

2

問題は、SomeDll.dllをロードできないことのようです。これが発生する理由はいくつかあり、そのいくつかは次のとおりです。

  1. dllは32ビットであり、64ビットプロセス(またはその逆)を実行しています。
  2. SomeDLL.dllには、使用できないいくつかの追加の依存関係(他のdll:sまたはCOMコンポーネント)があります。

somedll.dllでDependenyWalker:http : //www.dependencywalker.com/を実行して、問題がポイント2であるかどうかを確認できます。

于 2010-09-07T06:05:37.867 に答える