- 題名: Msvcrt80.dllについて
- 日時: 2009/10/08 20:19:56
- ID: 25557
- この記事の返信元:
- (なし)
- この記事への返信:
- [25558] Re[1]: Msvcrt80.dllについて2009/10/09 0:20:45
- ツリーを表示
> 抽出したマニフェストは以下のようになっていました。
> これはどういう意味なんでしょうか?
> (A) 8.0.50727.4053がなかったら8.0.50727.762を使う
> (B) 8.0.50727.4053と8.0.50727.762を両方使う
>
> (A)だったら動いてくれてよいと思うのですが。
どうも見てると(B)のようです。
(A) のように動作させるなら <bindingRedirect> 要素を使うみたいですね。
以下 MSDN の使用例が参考になりそうです。
http://msdn.microsoft.com/ja-jp/library/eftw1fys(VS.80).aspx
これを参考にしてアプリケーションフォルダのDLLを優先的に使用させるなら
762 をマニフェストから削除し、
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT"
version="8.0.50727.4053" processorArchitecture="x86"
publicKeyToken="1fc8b3b9a1e18e3b">
</assemblyIdentity>
<bindingRedirect oldVersion="8.0.50727.762"
newVersion="8.0.50727.4053"/>
</dependentAssembly>
とマニフェストを編集するようですが、これでどうでしょうか?
分類:[その他]
Visual Studio 2005 SP1の環境でDLLを開発していました。
Microsoft Updateの設定を行っていたため、
いつの間には使用されるMsvcr80.dllが
8.0.50727.762から
8.0.50727.4053に変わってしまいました。
8.0.50727.4053の再配布用のランタイムが用意されているので
それを使えば動くのですが、
8.0.50727.4053を入れたくないユーザがいて困っています。
「Visual Studio 2005 Service Pack 1 ATL セキュリティ更新プログラム」を
アンインストールして元に戻すのもなんなので、
8.0.50727.762で動かす方法がないかどうか探しています。
8.0.50727.762しかインストールされていない環境で
DLLをDepends.Exeで確認すると
Msvcrt80.dllが見つからないというメッセージが表示されました。
試しに書きのようなDllName.dll.manifestというファイルを作成したところ、
Depends.exeで8.0.50727.762が表示されました。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration>
<windows>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<publisherPolicy apply="no"/>
</assemblyBinding>
</windows>
</configuration>
しかし、
そのDLLを使用しているEXEを実行すると
「アプリケーションを正しく初期化できませんでした(0xc0150002)」と表示され
8.0.50727.4053が見つからないため起動できないようでした。
なにか手はありませんでしょうか?
よろしくお願いします。