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 フォルダーにフォルダーを追加しますが、これは奇妙に感じました。
誰かがこのヘルプの経験があれば、大歓迎です。私が省略した情報が必要な場合は、お知らせください。