vc2005编译出来的程序实现绿色版,即无须安装运行库
一直以來,受困于vc2005編譯出來的程序在部署上還需要安裝運行時庫的困擾,遲遲不肯拋棄經典的vc6。終于在今日,尋找一下解決方案!
我們知道vc2005的編譯增加了一個manifest,并通過該文件尋找DLL。所以,所謂的編譯出來的程序不能做到綠色安裝應該從這里入手。
第一種辦法:既然他找不到dll,那我們就靜態編譯吧,把運行時庫都編譯進來那不就結了嗎?
即:修改編譯選項為靜態庫,如下圖所示
如果是Debug就選/MTd 如果是Release就選/MT
如果用到了MFC那就還要修改一下
?
編譯出的程序沒有問題,拷到新安的xp自行自如
第二種辦法就相對來說好一點點,即將運行時庫拷貝到運行路徑下或者是system32下也行(當然了,我們考慮到綠色版的問題,那肯定是放在程序當前目錄了!),注意了,跟vc6只需要拷dll不同,你還得拷一個manifest。哪里拷呢?在vs2005的安裝目錄下有一個文件夾,如我默認安裝是在
C:\Program Files\Microsoft Visual Studio 8\VC\redist,這里應該有一個debug版本還有一個release版本,具體看你的選擇了
同樣的如果你不使用mfc,你只需要拷貝Microsoft.VC80.CRT.manifest以及msvcr80.dll就可以了,注意了,這里有三個文件,具體選擇哪一個就看你的字符集選項了,加上u的代表unicode。(注:本人不太喜歡u,還是gbk好啊,所以每建一個新工程,第一件事就是把字符集修改一下)
如果用了mfc,那還得C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.MFC下的Microsoft.VC80.MFC.manifest以及mfc80.dll
總結:
以上兩種辦法都可以做到無須用戶再安裝運行環境,真正的綠色安裝。
第一種辦法,即靜態編譯運行庫的辦法,優點很明顯,編譯出來只有一個文件,拷哪里都可以,但是,我們知道靜態編譯的話,編譯出來的文件相對較大,如,我做的一個helloWorld采用靜態編譯出來得有60多K,如果使用了mfc那至少得兩M多,而且不使用動態鏈接庫的話,占用內存相當較大。不過在如今,內存白菜價的今天,以及硬盤動不動就幾百G也無所謂了。況且部署一個10k的軟件跟2m的軟件在用戶看來是沒有區別的
第二種辦法,雖然單獨文件不大,但是合起來應該也小不了,雖然是動態鏈接,但是,我在疑惑,他使用的是當前路徑下的dll,那假設目標機器上安裝了運行庫,他會使用系統的還是當間目錄下的哪一個呢?那假設使用的是當前路徑下,那恐怕就節約不了內存了吧?
?
基于以上理解,我覺得,如果是給用戶使用的小軟件,而且追求綠色版,還是使用靜態編譯吧
相當vc2008以及vc2010應該也差不多吧
轉載于:https://www.cnblogs.com/linbc/archive/2009/08/27/1554889.html
總結
以上是生活随笔為你收集整理的vc2005编译出来的程序实现绿色版,即无须安装运行库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 挖金子修订版开发进行中
- 下一篇: Magnific Popup – 免费的