2005遷移項目工程所帶來問題

我們項目開發過程中難免要遷移工程,如對工程重命名,或將一個或多個項目添加到一個解決方案中,如果遷移方法不正確,或設置問題,總會出一些編譯問題,對熟悉大俠來說可謂駕輕就熟,但對像我一樣的初學者來說就會無從下手了,所以也查閱了相關資料再加上個人親身實驗,談談操作的相關步驟及遇到問題的解決辦法。

一、重命名解決方案/項目步驟

     如將一個AAA項目重命名爲BBB,一般是用sln解決方案文件打開工程的,打開後把項目AAA重命名爲BBB,改後只是邏輯名改了,其物理名還是AAA.vcproj,修改成BBB.vcproj,用sln打開時會找不到該項目,有兩個辦法,(1)移除不可用項目,右鍵解決方案,添加->現有項目,選擇BBB.vcproj即可,(2)用記事本直接打開sln,修改裏的項目名,路徑等,再用VS打開就可以了

      二、解決方案中添加多個項目

      這個其實很簡單了,右鍵解決方案,添加->現有項目,選擇相應的vcproj就可以了,需要重命名再參照上面的

       三、修改文件結構所帶來預編譯頭問題及解決辦法

       上面是以整個項目做爲遷移的,操作也很簡單,相信有點點動手能力的人,自己早就搞會了,我就是有點畫蛇添足了。可是如果要以單個文件遷移,修改文件的結構,特別是修改預編譯文件(一般是stdafx.h和stdafx.cpp),就會出現預編譯錯誤,一般爲如下三個:

1、“fatal error C1083: 無法打開預編譯頭文件:“Debug/DSMS.pch”: No such file or directory”

2、error C2859: ..../vc80.pdb 不是創建此預編譯頭時使用的 pdb 文件,請重新創建預編譯頭。

error C2859: ...../vc80.idb 不是創建此預編譯頭時使用的 idb 文件,請重新創建預編譯頭。

3、error LNK2001: 無法解析的外部符號 "int __cdecl _AfxInitManaged(void)" (?_AfxInitManaged@@YAHXZ)

 

      先來說一說解決辦法,這三個錯誤可以用一個辦法解決,右鍵你項目的預編譯文件(stdafx.cpp)――>屬性――>配置屬性――>C/C++――>預編譯頭――>創建/使用預編譯頭選擇創建預編譯頭->重新生成,解決。在選stdafx.cpp屬性時,其實每一個文件都有自己的屬性的,整個項目有屬性(菜單->項目->屬性),來管理所有文件,這個我也是後來才知道的(不要笑我啦),其它CPP都是“使用預編譯頭”,新添加的文件,項目默認設置成“使用預編譯頭”,所以當修改文件結構時,手動添加stdafx.cpp時就會出現上面的錯誤。

 

下面我們來人爲的製造這三個錯誤,藉此來說明原因。

新建一個MFC項目,修改stdafx.cpp爲“使用預編譯頭”,刪掉項目的Debug文件夾,生成就會出現第一個錯誤。

新建一個MFC項目,生成,修改stdafx.cpp爲“使用預編譯頭”,用菜單中的“清理項目”清理,重新生成就會出現第兩個錯誤。

新建一個MFC項目,生成,修改stdafx.cpp爲“使用預編譯頭”,重新生成就會出現第三個錯誤。

原因其實已經很明顯了,只說說第三個錯誤,是一個鏈接錯誤mfcs80ud.lib(stdafx.obj) : error LNK2001,我猜想是當stdafx.cpp爲“創建預編譯頭”時就obj不會再去鏈接_AfxInitManaged(void)了,關於_AfxInitManaged(void)是什麼也不得而知了,請高手賜教。

 

四、VS2005空項目變MFC項目步驟

1、項目->屬性->配置屬性->常規->MFC的使用中改成“在共享 DLL 中使用 MFC”

2、項目->屬性->配置屬性->常規->字符集中改成“使用 Unicode 字符集”

3、項目->屬性->配置屬性->鏈接器->高級->入口點填寫“wWinMainCRTStartup”

 

以上設置MFC程序可以成功編譯,不知道還有沒其它設置,如果通過空項目改成的,程序不能調試,還要設置相關選項生成調試信息。

 

VS2005調試時出現無法找到調試信息解決方案

首先打開菜單項目->項目屬性頁

1。選擇配置屬性->鏈接器->調試->生成調試信息改爲 是

2。選擇配置屬性->C/C++ ->常規->調試信息格式 改爲用於“編輯並繼續”的程序數據庫(/ZI)

3。選擇配置屬性->C/C++ ->優化->優化改爲 自定義

重新編譯,運行。

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/sniper08/archive/2010/04/20/5506276.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章