2012-03-09 14 views
0

私はC#のDLLを持っていてstdafx.h(JNIの別のDLL)にインポートしたかったです: "C:\ Users \ Marcus Tik \ Documents \ Visual Studio 2010 \ Projects \ DotNETSpy \ DotNETSpy \ bin \ Release \ DotNETSpy.dll " - > Visual Studioによると:" DLLの読み込み中にエラーが発生しました。Visual Studio:DLLの読み込み中にエラーが発生しました

次に、「エラーが発生したDependency Walkerを使用しました:「異なるCPUタイプのモジュールが見つかった場所」を使用しました。

C#DLLが異なるCPUタイプをサポートするのは標準的ではありませんか? 問題を解決するにはどうすればよいですか? あらかじめ高尚!

+1

管理対象アセンブリには依存しません。あなたが実際に達成したいことを説明するまで、より良い答えを得ることはできません。 –

+0

#importを使用していますか?つまり、C#で定義されたCOMオブジェクトをインポートしようとしていますか? – Phil

答えて

4

.Netアセンブリの依存関係を確認する場合は、Dependency Walkerの代わりにCheckAsmを使用することをお勧めします(少なくとも必要とするマネージコードの依存関係を確認する場合)。

管理された.Netライブラリを 'AnyCPU'にコンパイルすることができます。通常、32ビット/ 64ビットの問題については心配する必要はありません。しかし、あなたのDLLはアンマネージライブラリに依存しています。 32ビット版で、64ビットマシンで実行しようとしています。

+0

CheckASMをダウンロードしようとしましたが、IEに「CheckASMが頻繁にダウンロードされず、PCに害を及ぼす可能性があります。 –

+1

本当ですか?とにかくそれをダウンロードしてください。それはあなたのPCを温めません。それは単なる一般的な警告メッセージです。 – sloth

+0

CheckASMをFirefoxでダウンロード - >すべてOK CheckASMはC#DLLにエラーを報告しません。 –

0

OSが32ビットで、DLLが64ビット専用にコンパイルされている場合は、その結果が出ると思います。

+0

申し訳ありませんが、私のOSは64ビットです。 –

1

ビルドオプションをx86に変更すると、32ビットOS DLLを64ビット環境にインポートしようとしている可能性があります。

チェックアウトこのリンク:デバッグバージョンの仕事をしようとしてAccess x86 COM from x64 .NET

0

はかなり無意味ですが、あなたが展開され、CRTライブラリのデバッグバージョンを取得することはできません。 Dependency Walkerには現代の実行可能ファイルでガスがなくなり、マニフェストについては何も知らないことに注意してください。たとえそうでなくても、彼らは常に彼らを行方不明者として見せます。

このケースの2つのソリューションは、プライベートアセンブリとして使用するか、静的にリンクすることです。 しかし、これはデバッグ用であり、Microsoftの用語であるため、これらのファイルを配布しないでください。

関連する問題