ivaneeo's blog

          自由的力量,自由的生活。

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks

          vc2008確實好使,不過缺陷也非常明顯,只要是它編譯的東西,在其他電腦經(jīng)常會出現(xiàn)無法順利運行的情況,最常見的錯誤就是:“由于應用程序配置不正確,應用程序未能啟動。重新安裝應用程序可能會糾正這個問題。”

          經(jīng)過各種努力,最后發(fā)現(xiàn),一般情況下只需要安裝一下vcredist_x86.exe這個vc的可重發(fā)行組件包就可以了。其主要原理是因為vc2008的版本比較高,其編譯時鏈接的相關(guān)dll版本比xp下的高太多,而我們在xp下運行的時候調(diào)用的是老版本的dll,所以出現(xiàn)了問題。安裝新版的可重發(fā)行組件包后,舊版本的dll被替換成新版本的,問題就解決了。

          可是又出現(xiàn)了新的問題,總不能讓用戶使用我們軟件的時候,非要去安裝其他組件吧~~而且,其他很多軟件都是用vc開發(fā)的,這些軟件為什么不需要呢?本著鉆牛角尖的態(tài)度,進行了更深一步的探索;

          最近研究ccv,突然發(fā)現(xiàn)ccv的bin目錄下有一個Microsoft.VC90.CRT目錄,下面有幾個dll文件,還有一個manifast文件。看到這個不禁眼前一亮,在我的程序中把這幾個文件打包進去就ok了吧?于是進行嘗試,查找本機安裝vs2008目錄下的Microsoft.VC90.CRT目錄一頓cp,結(jié)果,很沮喪,測試失敗~~告一段落~~

          某天又在網(wǎng)上發(fā)現(xiàn)有人在帖子里的回答,其中兩個字吸引了我:“版本”。我靈機一動,趕緊去查看版本,發(fā)現(xiàn)我當前的版本是9.0.30729.4148,而帖子里的manifast文件中的版本是9.0.21022.8。于是,我趕緊找了一個這個版本的下載下來,替換我的程序中的這幾個dll和manifast,再運行,果然成功了。

           

          因此得到以下結(jié)論:

          1、可重發(fā)行組件包是沒問題的,肯定可以用,因為它替換了系統(tǒng)的這幾個dll,所以可行;

          2、如果不想在自己的“綠色”軟件的基礎(chǔ)上再要安裝這么個組件,或者自己的非綠色軟件在安裝的過程中再安裝這么個組件,只需要處理這幾個關(guān)鍵的dll就行啦。

          3、即使有了這幾個dll也不一定行,一定要注意版本!實在不行這幾個版本多試一試。我到現(xiàn)在還不太明白,我的vs2008的版本是9.0.30729.4148,編譯出來的東西應該也是這個版本的啊,可是為什么用了老版本才好用,新版本的反而不好用呢?

          4、具體文件如下:

          Microsoft.VC90.CRT.manifest

          msvcm90.dll

          msvcp90.dll

          msvcr90.dll

          posted on 2011-07-25 14:15 ivaneeo 閱讀(518) 評論(0)  編輯  收藏 所屬分類: tip
          主站蜘蛛池模板: 长丰县| 日喀则市| 房山区| 南安市| 化隆| 永德县| 安远县| 阆中市| 安多县| 石景山区| 恩施市| 黄平县| 千阳县| 读书| 安多县| 扶绥县| 高青县| 静安区| 双鸭山市| 永吉县| 油尖旺区| 同心县| 剑阁县| 静安区| 普安县| 东海县| 吴旗县| 进贤县| 三穗县| 江山市| 丰都县| 高阳县| 嘉定区| 盐边县| 宝鸡市| 大埔区| 永登县| 教育| 隆德县| 莎车县| 玉溪市|