VC7/VC8開發的庫在VC6中的使用問題

from:http://blog.csdn.net/freefalcon/article/details/1421662

現在,微軟一些新的SDK基本上都是用VC7/VC8(即VS .NET 2003/VS 2005)來開發的,當我們用VC6使用這些庫的Debug版本時就會發生鏈接錯誤,對於我們自己用VC7/VC8開發靜態庫或動態庫也存在同樣的問題,這主要是由於VC7/VC8使用了不同的調試信息格式以及增加了一些安全檢測機製造成的。

我們可以在VC7/VC8中修改一下工程的配置信息使其能夠被VC6使用,具體操作如下:

1. 打開工程設置界面,選擇C/C++屬性頁,將“常規(General) -> 調試信息格式(Debug Information Format)” 改爲“禁用(Disabled)”。

如果不進行此處修改,VC6在鏈接時將出現如下錯誤:

fatal error LNK1103: debugging information corrupt; recompile module

2. 將“代碼生成(Code Generation) -> 基本運行時檢查(Basic Runtime Checks)”改爲“默認(Default)”。

如果不進行此處修改,VC6在鏈接時將出現如下錯誤:

error LNK2001: unresolved external symbol __RTC_Shutdown 
error LNK2001: unresolved external symbol __RTC_InitBase 
error LNK2001: unresolved external symbol __RTC_CheckEsp 
error LNK2001: unresolved external symbol @_RTC_CheckStackVars@8 
error LNK2001: unresolved external symbol __RTC_UninitUse

3. 將“緩衝區安全檢查(Buffer Cecurity Check No)”改爲“否(No)”。

如果不進行此處修改,VC6在鏈接時將出現如下錯誤:

error LNK2001: unresolved external symbol ___security_cookie
error LNK2001: unresolved external symbol @__security_check_cookie@4

經過上述修改後,實際上生成的Debug版本已經不含調試信息了,因此我們也可以讓VC6下的Debug版直接使用VC7/VC8編譯的Release版,不過要注意修改Release版的運行期庫類型,使其與VC6一致。


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