3

x64 アプリケーションで使用する必要がある 32 ビット ライブラリがあるという厄介な状況があります。この問題を解決するために、32 ビット プロセスと 64 ビット プロセス間の通信を処理する COM サーバー アプリケーションを作成しました。

すべてが Windows 7 バージョン 上の VS2005 に組み込まれています8.0.50727.867。私が気づいたことの 1 つは、私のバージョンが SP1 再配布バージョン ( 8.0.50727.762) と一致していないことです。これは VS2005 の Vista アップデートが原因であると考えています。最新バージョンの redist が見つからないからです。

私の開発マシンでは動作しますが、Win7 x64 ボックスでは動作しません。したがって、エラーは次のとおりです。

「C:\Program Files\ScanScope\Controller\ACBarOmniServer.exe」のアクティベーション コンテキストの生成に失敗しました。依存アセンブリ Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195" が見つかりませんでした。詳細な診断には、sxstrace.exe を使用してください。

これより前に、VS2005 C++ 再頒布可能パッケージをインストールしました。もう一度インストールしてみましたが、うまくいきませんでした。Winsxs フォルダーを調べてみたところ、案の定、バージョンが見つかりません。

ここから redist インストーラーを実行すると、次のバージョンの CRT が sxs フォルダーに取得されます。

  • 8.0.50727.42
  • 8.0.50727.762
  • 8.0.50727.4053
  • 8.0.50727.4940

もちろん、 version が必要8.0.50727.6195です。

静的にリンクできるものはすべて設定しました (つまり、/MT、MFC への静的リンク、ATL へのリンクなし) が、C ランタイムの動的バージョンに依存するものがあります。

sxstrace を使用しましたが、うまくいきませんでした。トレースを開始し、プログラムを起動し、エラーを取得してトレースを終了し、別のファイルに解析します。解析されたファイルは完全に空です。

注目すべき興味深い点が 1 つあります。Win7ボックスでredistインストーラーを実行すると、文字通り1〜2秒で完了し、消えます。現在、プログラムの追加と削除にインストールされているのを確認し、sxs フォルダーにフォルダーを追加しますが、これは奇妙に感じました。

誰かがこのヘルプの経験があれば、大歓迎です。私が省略した情報が必要な場合は、お知らせください。

4

1 に答える 1

4

ここで正しい再配布可能なパッチを見つけました。

これは VS2005 ユーザーに送信された更新であり、一般ユーザーには送信されませんでした。 ため息、まあ。

于 2012-01-16T19:59:09.730 に答える