[Windows] C runtime library

vs2010上でダイナミックリンクした実行形式を別のWindows 7に持って行ったところ、msvcr100.dllがない、というエラーが発生。
MSDNの以下のエントリによればランタイムライブラリのdllが変わっている。
標準C++ライブラリを使っているとmsvcr100.dllが必要になる。
Visual Studio 2010
C Run-Time Libraries

http://msdn.microsoft.com/en-us/library/abx4dbyh.aspx
このdllは標準のインストールには入っていないので、エラーになる。
installer用のdllをvs2010上で作ったものを使うとエラーが発生する。その原因はこのランタイムをリンクしていないことだった。
プロパティページの構成プロパティからC/C++のランタイムライブラリを /MT オプションでスタティックリンクしたらあっさり動作した。
このとき、MSIのログ上で出力されたエラーは、
Error 1723. There is a problem with this Windows Installer package. A DLL required for this install to complete could not be run. Contact your support personnel or package vendor.
というもので、このエラーの説明を(Windows Installer Error Messages http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx)で調べると、

Ensure that the functions used by custom actions are actually exported. For more information about custom actions based upon a DLL, see Dynamic-Link Libraries.

などとコメントがあるのでexportされていないと思い込んでいた。

広告
%d人のブロガーが「いいね」をつけました。