ぼやきごと/2009-09-27/VC++2005SP1再頒布可能パッケージの罠 のバックアップ(No.1)


VC++2005SP1再頒布可能パッケージの罠

自作のC++/CLI製ライブラリ(ruche.aviutl.plugins.dll)が他の人のマシンで正常にロードされなかった。
手持ちのネットブック(開発環境なし)で試してみたところ、同じようにうまくロードされなかった。

MicrosoftUpdateは一通り適用してあったので、VC++2005SP1のランタイムライブラリが入っていないだけだろうと思い、Microsoftからダウンロードしてインストールしたものの、状況変わらず。
ネットで色々調べて、開発マシンのVisual Studio 2005 SP1に同梱されている再頒布可能パッケージをインストールしたところ、正常に動作するようになった。

ここまで終えた時点で「Microsoftが配布しているパッケージには必要なDLLが入っていないのか?」と考えたが、それは間違いだった。
入っていないのではなく、バージョンが異なっていた。

私の開発マシンに入っていたランタイムライブラリのバージョンは 8.0.50727.4053 で、自作ライブラリもこのバージョンを要求していた。
しかしMicrosoftが配布している再頒布可能パッケージ(VC++2005SP1用)内のランタイムライブラリのバージョンは 8.0.50727.762 だった。
このためバージョンが合わず、「ファイルが見つからない」と言われてしまっていた。
詳しくはWikipediaの分離アプリケーションとSide-by-Sideアセンブリ等を参照のこと。

「では、この 8.0.50727.4053 というバージョンは何なのか?」と思いもう少し調べてみたところ、こいつだった。

「VC++2005SP1に同梱されている再頒布可能パッケージにはこいつが含まれているけど、Microsoftが配布している方には含まれていないので、アプリケーションのユーザはこいつもインストールしてね。
 もちろんアプリケーションの配布者から指示されていることだと思うけど。
ってことですか?MSさん!?

Category: [Visual Studio][プログラミング] - 2009-09-27 01:52:51