3

これが私の構成です:

  • コンピュータ A - Windows 7、MS Visual Studio 2005、Win7 互換用のパッチ (8.0.50727.867)
  • コンピュータ B - Windows XP SP2、MS Visual Studio 2005 がインストールされている (8.0.50727.42)

私のプロジェクトには、いくつかの外部依存関係 (事前にビルドされた DLL - Aでビルドするか、インターネットからダウンロードしたもの)、ソースからビルドされた 2 つの DLL、および 1 つの実行可能ファイルがあります。私は主にAで開発していますが、すべて問題ありません。ある時点で、コンピューターBでプロジェクトをビルドしようとし、ビルド済みの DLL を出力フォルダーにコピーします。すべてが正常にビルドされますが、アプリケーションを起動しようとすると、

アプリケーションを正しく初期化できませんでした (0xc0150002)....

イベント ログには、次の 2 つが含まれます。

依存アセンブリ Microsoft.VC80.CRT が見つかりませんでした。最後のエラーは、参照されたアセンブリがシステムにインストールされていませんでした。

加えて、もう少し面白い

some.dll のアクティベーション コンテキストの生成に失敗しました。参照エラー メッセージ: 操作は正常に完了しました。

この時点で、私は自分の Google-Fu を試していますが、無駄です。ほとんどすべてのヒットは、Visual Studio がインストールされていないマシンでバイナリを実行することに関するものです。ただし、私の場合、実行可能ファイルは、ビルドされたコンピューターで実行できません。

次のステップは依存関係ウォーカーを試すことでしたが、それは私をさらに困惑させました-同じボックスのソースから構築された私のDLLは見つけることができませんがMSVCR80.DLLMSVCP80.DLL実行可能ファイルはこれら2つのDLLに関しては問題ないようです. MSVC?80.DLLs が見つかることを示していますが、DLL の 1 つを開くと、見つからないと表示されます。それは私が何をすべきか完全に考えていないところですので、親愛なるスタックオーバーフローにお願いします:)

横並びの全体については少しぼやけていることを認めますので、このトピックに関する一般的な読み物も高く評価されます.

4

4 に答える 4

3

あなたの質問にはあなたの問題に対する答えがあります:コンピュータAにはバージョン8.0.50727.867のVCランタイムがあり、コンピュータBにはバージョン8.0.50727.42しかありません。

コンピューターAでライブラリーを構築しましたが、それらはVCランタイムのバージョン867に依存しています。(これは、ライブラリーに埋め込まれたマニフェストにあります。)コンピューターBにコピーする場合、これらのライブラリーには、ランタイムのバージョン867が必要ですが、バージョン42しかありません。

VCランタイムアセンブリの依存関係を解決するには、バージョン867のVCランタイム再配布可能ファイルをコンピューターBにインストールする必要があります。ただし、両方のコンピューターで同じバージョンになるように、コンピューターBのVisualStudioを更新することをお勧めします。さらに良いことに、両方のコンピューターにVisual Studio 2005 SP1をインストールしてから、このセキュリティ更新プログラムをSP1にインストールします。後者をインストールした後、ライブラリはバージョン8.0.50727.4053に依存します。

于 2011-03-22T07:22:55.730 に答える
1

問題は、両方のマシンにインストールされている異なるバージョンのCRTランタイムに関連している可能性があります。これを検証するために静的にリンクされたCRTランタイムを使用するようにすべてのモジュールを構築することは可能ですか?

于 2011-01-02T13:05:00.237 に答える
0

最近、あるマシンでプロジェクトをビルドしてから別のマシンに移動するときに、同じタイプのエラーが発生しました。ここでの最大の原因は、バイナリ コンポーネントの 1 つのデバッグ構成である可能性があります。つまり、MSVC には、すべての DLL/EXE が同じランタイム ライブラリ、デバッグまたはリリースでビルドされるというかなり厳密な要件があります。

私がこれを起こしたとき、それらも問題なくコンパイルされる傾向がありますが、それらを実行しようとすると、非常に不可解なエラーメッセージが表示されます.

一緒にビルドするすべてのモジュールが同じ構成を使用していることを確認する必要があるため、ビルド チェーン全体でデバッグまたはリリースします。このエラーは、他のライブラリの不一致でも発生する可能性があるため、ビルドしているマシンで MSVC が正確に同じバージョンであることを確認してください。

于 2011-01-02T17:04:25.040 に答える
0

最初に、ダミープロジェクトを準備してそれらをロードすることにより、事前に構築されたdllを確認します

于 2011-01-02T13:10:30.687 に答える