10

c# プロジェクトで c++ dll を使用しています。window xp マシンでは正常に動作しましたが、window 2003 サーバー (x64) でデバッグ プロジェクトをコピーすると、以下のエラーが発生しました。どうすれば修正できますか。

ありがとう

「System.DllNotFoundException: DLL 'lib.dll' を読み込めません: アプリケーションの構成が正しくないため、このアプリケーションは開始できませんでした。アプリケーションを再インストールすると、この問題が解決する場合があります」

4

5 に答える 5

13

CRT dll を見つけるのに問題があると不平を言っています。最初に、DLL に必要なマニフェストが含まれていることを確認します。Visual Studio で、[ファイル] + [開く] + [ファイル] で DLL を選択し、RT_MANIFEST ノードが含まれていることを確認します。次の問題は、DLL のデバッグ ビルドを展開できないことです。CRT のデバッグ バージョンに依存するため、ターゲット マシンにインストールすることはできません。

CRT が静的にリンクされるように、DLL のリリース ビルドを展開するか、/MT オプションを指定して DLL をコンパイルします。プロジェクト + プロパティ、C/C++、コード生成、ランタイム ライブラリ。DLL が /clr オプションを使用してコンパイルされた場合、これは機能しません。

于 2010-01-19T13:19:24.047 に答える
7

DLL の読み込みの問題については、Dependency Walkerツールを使用することをお勧めします。正確な問題を示してくれるので、このような問題に対処するときに価値があることが証明されています。

Visual Studio 2005 を所有している場合は、C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin\depends.exe.

アップデート:

MSVCR90D.DLLVisual C++ ランタイム 9.0 のデバッグ バージョンです。デバッグ目的でのみ使用してください。DLL ロードの問題を回避するために、ライブラリのリリース バージョンをビルドすることを強くお勧めします。ただし、どうしてもデバッグ バージョンをデプロイする必要がある場合は、必要なすべての DLL が にありますC:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86

于 2010-01-19T13:03:12.103 に答える
4

ターゲットマシンにVisualC++ランタイムをインストールしていないようです。ここからインストールできます。これらのdllのデバッグバージョンを使用しているように見えるので、おそらく最初にリリースモードでアプリをビルドする必要がありますか? この投稿これには、役立つ可能性のある他の提案がいくつかあります...

于 2010-01-19T18:52:34.000 に答える
3

lib.dllは32ビットDLLですか?C#プログラムはx64でネイティブに実行されますが、32ビットDLLをロードできません。C#プロジェクトのターゲットCPUを「x86」に変更して、WOW64で実行するように強制することができます。

于 2010-01-19T19:39:49.510 に答える