• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            應(yīng)

            我們的工程馬上就要發(fā)布,但是在一個(gè)干凈的,即沒(méi)有安裝vs2005的xp上運(yùn)行(利用虛擬機(jī)測(cè)試)卻彈出下面得錯(cuò)誤
            “由于應(yīng)用程序配置不正確,應(yīng)用程序未能啟動(dòng)。重新安裝應(yīng)用程序可能會(huì)糾正這個(gè)問(wèn)題“
            在英文os上:
            This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.
            考慮到程序的運(yùn)行環(huán)境問(wèn)題,可能是由于沒(méi)有安裝.netFrameWork.但是后來(lái)安裝上之后仍然如故。郁悶。。。
            在網(wǎng)上找出了這些方法:
            方法一:
            在類(lèi)似C:\Program Files\Microsoft Visual Studio 8\VC\redi
            st\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT 下找到了下列文件:
            msvcm80d.dll
            msvcp80d.dll
            msvcr80d.dll
            Microsoft.VC80.DebugCRT.manifest
            把這幾個(gè)文件拷貝到目標(biāo)機(jī)器上,與運(yùn)行程序同一文件夾或放到system32下,就可以正確運(yùn)行了。
            其他release版、MFC程序什么的都是拷redist下相應(yīng)文件夾下的文件就可以了,文件夾后都有標(biāo)識(shí)!
            方法二:
            修改編譯選項(xiàng),將/MD或/MDd 改為 /MT或/MTd,這樣就實(shí)現(xiàn)了對(duì)VC運(yùn)行時(shí)庫(kù)的靜態(tài)鏈接,在運(yùn)行時(shí)就不再需要VC的dll了。
            注:MSDN中對(duì)于在不同的配置下Link的LIB作了說(shuō)明:
            C Runtime Library:
            開(kāi)關(guān) 對(duì)應(yīng)的庫(kù) 版本
            /MD MSVCRT.LIB 多線程DLL的Release版本
            /MDd MSVCRTD.LIB 多線程DLL的Debug版本
            /MT LIBCMT.LIB 多線程靜態(tài)鏈接的Release版本
            /MTd LIBCMTD.LIB 多線程靜態(tài)鏈接的Debug版本
            /clr MSVCMRT.LIB 托管代碼和非托管代碼混合
            /clr:pure MSVCURT.LIB 純托管代碼 
            C++ Standard Library:
            開(kāi)關(guān) 對(duì)應(yīng)的庫(kù) 版本
            /MD MSVCPRT.LIB 多線程DLL的Release版本
            /MDd MSVCPRTD.LIB 多線程DLL的Debug版本
            /MT LIBCPMT.LIB 多線程靜態(tài)鏈接的Release版本
            /MTd LIBCPMTD.LIB 多線程靜態(tài)鏈接的Debug版本 
            編譯器會(huì)自動(dòng)根據(jù)編譯選項(xiàng),選擇對(duì)應(yīng)的LIB文件。一般情況下這不會(huì)出現(xiàn)問(wèn)題。
            然而,在部分情況下,一旦你的程序的各個(gè)部分(LIB, OBJ…)并非由相同的編譯選項(xiàng)編譯出,而Link在一起的話,會(huì)出現(xiàn)各種各樣的看似很難解決的問(wèn)題,這類(lèi)問(wèn)題主要以重復(fù)定義的錯(cuò)誤形式存在,通常的解決方法也很簡(jiǎn)單,就是選擇同樣的編譯選項(xiàng)進(jìn)行編譯之后再Link
            方法三:
            工程-》屬性-》配置屬性-》常規(guī)-》MFC的使用,選擇“在靜態(tài)庫(kù)中使用mfc”
            這樣生成的exe文件應(yīng)該就可以在其他機(jī)器上跑了。
            方法四:
            安裝vcredist_x86.exe

            這樣四步下來(lái),大部分程序都應(yīng)該可以運(yùn)行了,但悲哀的是在我的測(cè)試機(jī)上還是報(bào)應(yīng)用程序配置錯(cuò)誤。無(wú)奈。。
            后打開(kāi)vs2005的命令行,運(yùn)行depends.exe,試圖找出程序啟動(dòng)所依賴(lài)的dll,結(jié)果大失所望,虛擬機(jī)上這些dll都有。如此這般令人抓狂。
            最后把vs2005安裝目錄下的所有.manifest文件(可以搜索 *.manifest得到)都考到程序目錄下,程序奇跡般的可以運(yùn)行。
            然后實(shí)驗(yàn),刪掉冗余的.manifest文件,只需要5個(gè)就夠了。它們是Microsoft.VC80.ATL.manifest
            Microsoft.VC80.CRT.manifest
            Microsoft.VC80.DebugCRT.manifest
            Microsoft.VC80.DebugMFC.manifest
            Microsoft.VC80.MFC.manifest

            Posted on 2009-11-10 13:58 micheal's tech 閱讀(881) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            久久久久18| 久久精品中文无码资源站| 国产精品久久久久久久久免费| 久久精品欧美日韩精品| 欧美精品一区二区精品久久| 久久av免费天堂小草播放| 国产精品一区二区久久精品涩爱| 久久久久波多野结衣高潮| 热久久国产精品| 亚洲AV无码久久精品蜜桃| 99久久国产综合精品五月天喷水| 99久久做夜夜爱天天做精品| 99国产精品久久| 久久狠狠爱亚洲综合影院| 国产精品无码久久四虎| 久久丫精品国产亚洲av| 精品久久人人妻人人做精品| 久久综合给合久久狠狠狠97色| 麻豆久久| 伊人久久免费视频| 久久91综合国产91久久精品| 精品一二三区久久aaa片| 亚洲国产成人精品女人久久久 | 久久久久无码精品国产| 日日狠狠久久偷偷色综合96蜜桃 | 国产精品综合久久第一页| 五月丁香综合激情六月久久| 亚洲美日韩Av中文字幕无码久久久妻妇| 69SEX久久精品国产麻豆| 亚洲午夜久久久久妓女影院| 欧美精品国产综合久久| 伊人 久久 精品| 久久久精品国产免大香伊| 伊人久久亚洲综合影院| 亚洲人成无码www久久久| 亚洲午夜精品久久久久久app| 国产99久久久久久免费看| 久久婷婷久久一区二区三区| 久久亚洲高清观看| 久久精品国产第一区二区| 久久综合九色综合久99|