上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
新しい記事を書く事で広告が消せます。
Windows XP 以降で、 Visual C++ 2005 のランタイムである、
msvcr80.dll とか、msvcp80.dll とか msvcm80.dll をプライベートアセンブリで使う方法。(SxS(Side-by-Side)対策)
ランタイムをインストールすればいいだけだけど、何らかの事情でインストールが出来ない場合の方法。
msvcr80.dll とか、msvcp80.dll とか msvcm80.dll をプライベートアセンブリで使う方法。(SxS(Side-by-Side)対策)
上記エラーが出た時の対応策。このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。
アプリケーションを再度インストールすることにより問題が解決する場合があります。
ランタイムをインストールすればいいだけだけど、何らかの事情でインストールが出来ない場合の方法。
1.Microsoft.VC80.CRT.manifest というファイル名で下の内容を保存。
2.動かしたい実行ファイル「example.exe」に対応する example.exe.manifest を作成。(中身は上と同じ内容)
※ マニフェストファイルの、 <file name="msvcr80.dll"/> の部分は、example.exeが使用するDLL名を書く。
上は msvcr80.dll だけが使われる場合の例。
3つ全てが必要なら、
使用するDLL名は、Dependency Walker や PEiD などで調べられる。
別にバイナリ覗いてもいいけど。
※ もしバージョンが違うなら、
version="8.0.50727.762"
の箇所も適宜変更。
3.example.exe と同じ場所に「Microsoft.VC80.CRT.manifest」 と 「example.exe.manifest」、そして必要なDLLを置いて、example.exeを実行すれば動く。
※ MFCもこれの応用でいけるはず。確認まではしてませんが。
Microsoft.VC90.MFC.manifest
●Visual C++ 2008 では?
Visual C++ 2008 (msvcr90.dll、msvcp90.dll、msvcm90.dll) でもやり方は同じ。
その際のファイル名は「Microsoft.VC90.CRT.manifest」。中身も適宜変更。
●Visual C++ 2010 では?
VC10から、SxS(Side-by-Side)は廃止されたので、
msvcp100.dll、msvcr100.dll をexeと同じ場所に置くだけでOK。
●参考にさせていただいたサイト
・イグトランスの頭の中(のかけら) ≫ VC++ 2005のランタイムDLLをEXEに同梱する
・VC++ 2005 Express Edition で作成したアプリケーションを別の環境で動かすには (GotDotNet Japan 掲示板)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="Microsoft.VC80.CRT"
version="8.0.50727.762"
processorArchitecture='x86' />
<file name="msvcr80.dll"/>
</assembly>2.動かしたい実行ファイル「example.exe」に対応する example.exe.manifest を作成。(中身は上と同じ内容)
※ マニフェストファイルの、 <file name="msvcr80.dll"/> の部分は、example.exeが使用するDLL名を書く。
上は msvcr80.dll だけが使われる場合の例。
3つ全てが必要なら、
<file name="msvcr80.dll"/>
<file name="msvcp80.dll"/>
<file name="msvcm80.dll"/>
と書く。使用するDLL名は、Dependency Walker や PEiD などで調べられる。
別にバイナリ覗いてもいいけど。
※ もしバージョンが違うなら、
version="8.0.50727.762"
の箇所も適宜変更。
3.example.exe と同じ場所に「Microsoft.VC80.CRT.manifest」 と 「example.exe.manifest」、そして必要なDLLを置いて、example.exeを実行すれば動く。
※ MFCもこれの応用でいけるはず。確認まではしてませんが。
Microsoft.VC90.MFC.manifest
●Visual C++ 2008 では?
Visual C++ 2008 (msvcr90.dll、msvcp90.dll、msvcm90.dll) でもやり方は同じ。
その際のファイル名は「Microsoft.VC90.CRT.manifest」。中身も適宜変更。
●Visual C++ 2010 では?
VC10から、SxS(Side-by-Side)は廃止されたので、
msvcp100.dll、msvcr100.dll をexeと同じ場所に置くだけでOK。
●参考にさせていただいたサイト
・イグトランスの頭の中(のかけら) ≫ VC++ 2005のランタイムDLLをEXEに同梱する
・VC++ 2005 Express Edition で作成したアプリケーションを別の環境で動かすには (GotDotNet Japan 掲示板)
関連しているかもしれない記事一覧
トラックバックURL↓

