作者sennin32 (Sennin32)
看板C_and_CPP
標題[心得] VC++ 2005之後版本執行檔不能執行問題
時間Sun Sep 20 19:56:21 2009
好像沒有人PO相關解法,分享一下,我只是小嫩嫩,有錯誤的話請不吝指正
VS 2005 與 VS 2008 之後的版本
都會有一個問題:
輸出的執行檔在沒有安裝VS 2005 或 VS 2008的電腦下無法執行
這是因為該電腦中並沒有所需的DLL的關係
我今天終於灌好VS 2008有東西能用了(confiker病毒超機掰害老子我重灌)
這篇文章告訴大家怎麼樣能讓他正常執行
因為我的環境是英文版(下載時只有殘體中文跟英文能選只好選英文)
所以中文名詞是依照我的印象打的可能有誤
------------------------------------開始了------------------------------------
前言:
沒有特別說明的話,設定畫面的開法都是:
Solution Explorer(方案瀏覽器)->你的專案/方案 上點右鍵->properties(設定)
一開始我們要先更改組態設定,將預設的除錯(Debug)改為發佈(Release)
這時候會因為你是選擇方案或是專案而有不同的操作
1.方案設定 : Configuration Propreties->Configuration
這時候你所有的專案會被列在一個表中,這個表有專案名稱.組態.平台.已建置
這四個欄位,在Configuration(組態)這欄選擇release(預設應該是Debug)
2.專案設定 : Configuration Propreties->Configuration(在視窗左上角下拉式選單)
同樣改成Release即可
將組態設定完成之後,我們有兩個方法可以進行接下來的工作
這兩種方式是截然不同的
1.在想執行的電腦上安裝VC++ 2005 或 VC++ 2008可轉散發套件,這樣電腦中缺少的DLL
就都有了!
2005 :
http://0rz.tw/e55dr
2008 :
http://0rz.tw/GBwSd
2.將這些程式碼都編進我們的二元碼檔案中,這樣會造成二元碼的大小變大
方法如下 :
專案設定 : Configuration Propreties->Code Generation->Runtime Library
在下拉式選單選擇 Multi-Threaded(/MT) 或 Multi-threaded Debug(/MTD)
這樣我們所編繹出來的程式便不會使用DLL,而是在編譯時就將程式碼全部放入二元碼
中,用這個方法會有某些函式是不能使用的(像AFX函式好像一堆不能用吧),但這些函
式
通常有功能一模一樣的其他函式能代替,如果出現錯誤就換一個吧
一樣的,這兩種方式擇一即可,但是如果多幾個(2)的方式產生的執行檔,其實浪費的空間就
比(1)大很多了,而"很多"也頂多4.5個就超過了,所以如果可以的話就用方法(1)吧
閒著沒事做的人可以用VS2005做個安裝檔(等有空再說說怎麼做吧)把這些東西都包進去或
是包個連結(不知道可不可以),然後弄個選單(不知道VS2005能不能直接做,沒試過)讓使用
者選擇是否安裝或下載甚至自己檢查登錄檔,沒安裝過的話就安裝(我還是沒做過XD)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.10.69.94
推 wowtiger:請 google 查一下 Microsoft.VC80.CRT 謝謝 09/20 21:41
→ WPC001:到底想要表達什麼??? o_Oa 09/20 22:54
推 VictorTom:只是整理一下, 用VC寫的程式拿到沒有裝VC的環境會遇到程 09/20 23:12
→ VictorTom:式初始化失敗, 的兩種常見的解決方法罷了....@_@" 09/20 23:12
→ VictorTom:題外話, 有裝VC又另外裝VC Dist不知道是不是會有問題, 09/20 23:13
→ VictorTom:我的防火牆軟體安裝VC2005 Dist時一定會發生error, 直到 09/20 23:13
→ VictorTom:它們改版幫我裝VC2008 Dist後就順利裝完了; PS. 我的電 09/20 23:14
→ VictorTom:腦裡有VC 2005; XP SP3, Win Update除了IE/WMP都裝了@@" 09/20 23:14
推 wowtiger:所以我的方案不被納入阿 ...0rz 明明是最常見的作法 09/20 23:23
推 VictorTom:google到第一個MSDN的結果, 可是說真的看起來好像很麻煩 09/20 23:29
→ VictorTom:說@_@" 寫程式的這端改個project屬性, 或者要run的那端 09/20 23:30
→ VictorTom:裝個VC Dist, 感覺比一點一點慢慢查省事的多啊....Orz 09/20 23:30
推 wowtiger:直接複製 VC\redist\x86\Microsoft.VC80.CRT 的資料夾阿 09/20 23:45
→ wowtiger:在 C:\Program Files\Microsoft Visual Studio 8.0 裡面 09/20 23:45
推 wowtiger:簡單講 請參考 WOW 的作法 09/20 23:48
推 VictorTom:原來是這個意思啊, 不到1.6M的檔案, 這招也不錯XD 09/21 00:37
推 Ebergies:我都用 wowtiger 的做法, 超級方便 09/22 15:42
推 eagle36:請問WOW的作法是要複製到哪個位置? 09/28 20:19