亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

Microsoft Visual C++ 程序的部署方法

2020-01-26 16:20:03
字體:
來源:轉載
供稿:網友

1. 用Microsoft Visual C++ 6.0編譯的程序,或者發布在Windows 2000/NT/ME/98 系統
單純通過拷貝MSVCRxx.DLL文件到應用程序目錄或system32目錄即可

2. 用Visual Studio 2005以上編譯的程序,且發布在Windows XP及以上系統
為了減少DLL引發的配置問題(DLL hell),C和C++運行時由并行 (Side-by-Side) 程序集實現,單純通過拷貝MSVCRxx.DLL并不足以在非開發環境正常運行程序,必須通過一個清單(manifest)來加載CRT DLL。如果加載C運行時庫時沒有這個清單,會引發R6034異常。這就是為何CRT DLLs現在位于WinSXS(Windows Side-by-Side)而不在System32目錄的原因。

EXE和DLL文件都會有一個manifest文件,里面說明了依賴關系,用Visual Studio 2005編譯后,會自動產生與可執行文件同名的manifest文件,如:
app.exe                // 可執行文件
app.exe.manifest    // dll依賴文件
一般情況下,會把EXE和DLL的manifest文件嵌入到EXE和DLL文件中,外置的manifest就可以刪除了。如:
mt.exe /nologo /manifest "./app.exe.manifest" /outputresource:"./app.exe";1
在EXE文件中,最后面的值為1,在DLL文件中,值為2
Microsoft Visual C++運行庫DLL文件中則沒有嵌入manifest文件,因此需要外部的manifest文件,Visual Studio 2005的manifest名字叫Microsoft.VC80.CRT.manifest,Visual Studio 2008的manifest名字叫Microsoft.VC90.CRT.manifest,所以要將Microsoft.VC80.CRT.manifest,MSVCR80.dll,MSVCP80.dll,MSVCM80.dll 這四個文件拷貝到應用程序目錄。如
C:/Test/app.exe
C:/Test/MSVCR80.dll
C:/Test/MSVCP80.dll
C:/Test/MSVCM80.dll
C:/Test/Microsoft.VC80.CRT.Manifest
或者采用Microsoft官方建議,如:
在WinXP以上
C:/Test/app.exe
C:/Test/Microsoft.VC80.CRT/Microsoft.VC80.CRT.manifest
C:/Test/Microsoft.VC80.CRT/msvcr80.dll
C:/Test/Microsoft.VC80.CRT/msvcp80.dll
C:/Test/Microsoft.VC80.CRT/msvcm80.dll
在Win2K以下
C:/Test/app.exe
C:/Test/msvcr80.dll
C:/Test/msvcp80.dll
C:/Test/msvcm80.dll
如果用以上方法還是不能執行,說明Microsoft Visual C++在系統中有多個版本的DLL,程序用到的和發布的Microsoft Visual C++ DLL不匹配,如:
app.Manifest 文件,要求Microsoft.VC90.CRT的DLL,并且版本為9.0.21022.8

復制代碼 代碼如下:

<?xml version='1.0'encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level='asInvoker' uiAccess='false'/>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC90.CRT'version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b'/>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls'version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'/>
    </dependentAssembly>
  </dependency>
</assembly>

Microsoft.VC90.CRT.manifest文件,指明是Microsoft.VC90.CRT,但版本為9.0.30729.1

復制代碼 代碼如下:

<?xml version="1.0"encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <noInheritable></noInheritable>
    <assemblyIdentity type="win32" name="Microsoft.VC90.CRT"version="9.0.30729.1" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    <file name="msvcr90.dll" hashalg="SHA1" hash="9785b1c493deb5b2134dc4aef3719cee207001bc"><asmv2:hash xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:Transforms><dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity"></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod><dsig:DigestValue>VF5ECUAHPV7EnUf+/UIXMPizPvs=</dsig:DigestValue></asmv2:hash></file><file name="msvcp90.dll" hashalg="SHA1" hash="0f6bbf7fe4fb3fca2cb5b542eca1a1cad051f01c"><asmv2:hash xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:Transforms><dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity"></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod><dsig:DigestValue>3Wg+StVMq2uhx7POnAkl2w4dDmY=</dsig:DigestValue></asmv2:hash></file><file name="msvcm90.dll" hashalg="SHA1" hash="7f3290ab2b7444c2b4a9b1fedfdb16466d7a21bb"><asmv2:hash xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:Transforms><dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity"></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod><dsig:DigestValue>/YfRn7UQENzdMeoMHxTgdRMiObA=</dsig:DigestValue></asmv2:hash></file>
</assembly>


二者版本不一致,導致程序不能運行,解決辦法是發布程序要求的9.0.21022.8版本的Microsoft.VC90.CRT文件

3. 還有一種簡單辦法是在需要部署的機器上安裝Visual C++ 2008 Redistributable Package(x86)或者(x64)。

注:

用Dependency Walker(depends.exe)打開要發布的EXE,從左上角的列表中找出系統中需要依賴的DLL

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品国内产的精品视频在线观看| 日本成人精品在线| 日韩欧美中文第一页| 国产女精品视频网站免费| 精品露脸国产偷人在视频| 日韩欧美在线一区| 亚洲黄色www网站| 亚洲成人网av| 色综合伊人色综合网| 亚洲电影第1页| 日韩av网站导航| 国产欧美日韩91| 影音先锋欧美在线资源| 久久av在线看| 日韩视频中文字幕| 国产精品第3页| 国产精品香蕉av| 成人激情视频网| 久久精品国产69国产精品亚洲| 91精品国产综合久久久久久蜜臀| 国产精品视频自拍| 成人国产精品久久久| 国产一区视频在线播放| yellow中文字幕久久| 亚洲性生活视频在线观看| 91免费视频国产| 丝袜亚洲另类欧美重口| 51色欧美片视频在线观看| 日韩美女激情视频| 中文字幕日韩在线观看| 91超碰caoporn97人人| 最近2019年好看中文字幕视频| 国产成人一区二区在线| 久久成人免费视频| 亚洲精品久久久久久久久久久久| www.久久色.com| 欧美做爰性生交视频| 丝袜亚洲另类欧美重口| 在线不卡国产精品| 国产日韩欧美一二三区| 久久男人av资源网站| 亚洲欧美综合图区| 欧美片一区二区三区| 亚洲国产精品悠悠久久琪琪| 亚洲影影院av| 欧美www视频在线观看| 日本国产精品视频| 国产精选久久久久久| 亚洲新中文字幕| 欧美国产日韩中文字幕在线| 欧美一区二三区| 亚洲女人被黑人巨大进入| 亚洲欧美国产一本综合首页| 亚洲精品久久久久久久久久久久| 成人淫片在线看| 欧美与欧洲交xxxx免费观看| 亚洲人高潮女人毛茸茸| 久久影视电视剧凤归四时歌| 国产亚洲美女精品久久久| 日韩精品免费在线观看| 亚洲一区二区三区香蕉| 日韩精品在线观看网站| 日本免费在线精品| 91精品综合久久久久久五月天| 91精品国产99久久久久久| 欧美精品激情在线观看| 欧美另类暴力丝袜| 日韩亚洲精品电影| 91精品国产高清| 欧美另类在线播放| 国产精品稀缺呦系列在线| 国产做受69高潮| 国产又爽又黄的激情精品视频| 欧洲亚洲免费在线| 日韩大片免费观看视频播放| 欧美成年人网站| 在线观看日韩av| 国产丝袜高跟一区| 中文字幕日韩欧美在线| 亚洲国产成人爱av在线播放| 国产69精品久久久久99| 九九热精品视频在线播放| 亚洲a一级视频| 欧美黑人又粗大| 国产成一区二区| 国产精品99久久久久久人| 日本免费在线精品| 日韩av黄色在线观看| 国产98色在线| 久久人人爽人人爽人人片av高请| www.亚洲免费视频| 国产亚洲一区精品| 美乳少妇欧美精品| 久久久亚洲影院你懂的| 国产成人精品av| 国产国语刺激对白av不卡| 久久99久久99精品免观看粉嫩| 国产精品丝袜一区二区三区| 午夜精品一区二区三区视频免费看| 欧美黑人一区二区三区| 成人免费视频网址| 国产精品成人观看视频国产奇米| 国产一区二区视频在线观看| 国产成人亚洲精品| 高跟丝袜一区二区三区| 欧美激情精品久久久久久变态| 日本亚洲欧洲色| 色香阁99久久精品久久久| 欧美激情亚洲视频| 国产成人精品一区二区| 国产+成+人+亚洲欧洲| 久久久久久久亚洲精品| 久久久之久亚州精品露出| 97国产精品视频| 欧美日韩在线观看视频小说| 一本色道久久综合狠狠躁篇的优点| 国产一区二区久久精品| 亚洲欧美国内爽妇网| 亚洲精品网址在线观看| 91国产精品电影| 亚洲黄色在线观看| 一区二区三区四区视频| 国产精品96久久久久久又黄又硬| 久久夜色精品亚洲噜噜国产mv| 亚洲自拍小视频免费观看| 欧美大片在线免费观看| 狠狠爱在线视频一区| 日韩中文字幕网站| 一本色道久久综合狠狠躁篇怎么玩| 国产精品日韩欧美大师| 日韩中文视频免费在线观看| 美日韩丰满少妇在线观看| 亚洲三级 欧美三级| 人妖精品videosex性欧美| 亚洲国产一区二区三区在线观看| 亚洲视频欧美视频| 国产日韩欧美视频在线| 亚洲女人被黑人巨大进入| 亚洲国产精品久久久久秋霞蜜臀| 国产高清在线不卡| 日本久久久久久久久| 麻豆国产va免费精品高清在线| 色久欧美在线视频观看| 欧美精品videos另类日本| 亚洲精品久久久久久久久久久久久| 久久久噜噜噜久久| 欧美日韩精品在线播放| 亚洲欧美在线免费观看| 91精品国产网站| 91av在线国产| www.欧美精品一二三区| 97国产一区二区精品久久呦| 国产精品日韩欧美综合| 国产成人精品999| 亚洲人成电影网站色| 国产欧美精品一区二区三区介绍| 日韩中文字幕欧美| 7777精品久久久久久| 欧美黑人巨大xxx极品| 欧美性69xxxx肥| 中文字幕精品影院| 这里只有视频精品| 日韩欧美成人精品| 国产精品普通话|