1

コンパイルするプラットフォームを変更してdllをx64に変換するためにVC++(VS2008)でコンパイルしようとしたときに、Native Cを使用して記述された32ビットdllがありました。しかし、「x64」プラットフォームでもある C# アプリケーションから dll にアクセスしようとすると、dll のロードに失敗します。dll をアプリケーションにリンクするために Dllimport を使用しました。

Vista で使用しているオペレーティング システムですが、アプリケーションから at dll 関数を呼び出すことができず、dll のロードに失敗したと表示されます。

この問題を解決する方法はありますか。

あなたの助けを楽しみにしています。

よろしく、ガ

4

5 に答える 5

0

さまざまなバージョン(x86 / x64)のdllをビルドする場所を確認してください。

最も簡単な方法は、64ビットdllのターゲットディレクトリをターゲットフォルダの「x64」サブディレクトリに設定することです。64ビットソリューション構成で、C#のターゲットディレクトリを「x64」ディレクトリにも設定します。

これにより、各プラットフォームのexeが正しいdllをロードしようとします。

于 2009-06-04T09:59:41.307 に答える
0

お手伝いありがとうございます。

dllをC:\ Windows \ System32 \の下に置くと、エラーは解決しました。

ありがとう、Ga

于 2009-06-04T10:42:22.953 に答える
0

ツール "dependency walker" (ldd に似た win 用のツール、www.dependencywalker.com) を試して、どのリンクが何にリンクしているかを調べてください。役立つかもしれません。

于 2009-06-04T09:24:17.150 に答える
0

新しい DLL には、必要な 64 ビット DLL が欠落している可能性があります。

于 2009-06-04T09:19:30.047 に答える
-1

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

Check that you are not causing some sort of error when you are setting up the DLL in your C code.

于 2009-06-04T10:42:33.670 に答える