1

私は2つのプロジェクトを持つVisual Studiosソリューションを持っています.1つはVB.netで、もう1つはVC++です。VC++ プロジェクトは、Nvapi と呼ばれる Nvidia のドライバー API のラッパーです。これは、nvapi.lib ファイルと関連するヘッダー ファイルです。コードは開発マシンでコンパイルして正常に実行されますが、ソリューション ディレクトリ全体を別のコンピューターにコピーして実行可能ファイルを実行しようとすると、VC++ プロジェクト dll またはその依存関係の 1 つが見つからない、または読み込まれないというエラーが表示されます。コードが nvapi ラッパーを使用するまでは正常に動作しますが、その後クラッシュします。インストーラーを生成してプログラムをインストールするようにプロジェクトを公開しようとしましたが、同じエラーが発生します。

VS2010 を別のコンピューターにインストールして、問題をデバッグできるかどうかを確認することにしました。VS2010 をインストールした後、ソリューション フォルダーのバックアップ コピーを作成しました。次に、ソリューションを開いてコンパイルし、コードを正常に実行しました。これは私が本当に理解していない部分です。ソリューションのバックアップコピー(開発マシンでコンパイルされたもの)に移動し、実行可能ファイルに移動して実行したところ、正常に機能しました。私が考えることができる唯一のことは、コードをコンパイルすると、Nvapi.libファイルがシステムディレクトリにコピーされ、exeが機能するようになることです。この問題の原因と、Visual Studio をインストールせずに自分のコードを他のマシンで動作させる方法を知っている人はいますか?

4

1 に答える 1

3

よくある間違いは、C++ プロジェクトのデバッグ ビルドを別のマシンにコピーすることです。msvcr100d.dll などのランタイム DLL のデバッグ バージョンを見つけることができません。リリース ビルドのみをデプロイします。

リリース ビルドをデプロイしても問題が解決しない場合は、vcredist インストーラーを実行するのを忘れている可能性があります。C++ 標準ライブラリ クラスを使用しない DLL と EXE が 1 つしかない場合は、代わりに /MT を使用してコンパイルすることで、この依存関係を技術的に回避できます。欠落している依存関係が不明な場合は、SysInternals の ProcMon を使用してください。

于 2013-01-07T21:06:43.957 に答える