VC6.0以及VS2005下 鏈接錯誤operator delete(void *)」 (??3@YAXPAX@Z) already defined in LIBCMTD.lib(dbgdel.obj)的解決方法
2013年10月13日 ? 綜合 ? 共 829字 ? 字號 小 中 大 ? 評論關閉測試
VC6.0 下對於該問題的解決方法debug
昨天寫了個小小的TCP的客服端負責接收數據並打印,在本機上寫好後,測試也沒問題可是放在另一個PC上運行報告找不到一個lib庫,後來就將程序改爲了 using MFC Class Static library 模式 可是鏈接報告了這個錯誤 operator delete(void *)" (??3@YAXPAX@Z) already defined in LIBCMTD.lib(dbgdel.obj) 當時真讓人抓狂,根據網上搜索的信息,說是MFC自身lib 中也定義了new delete 操做 和CRUNTIME lib 中起衝突了,須要調整他們之間的順序,後來參看msdn 文章【http://support.microsoft.com/default.aspx?scid=kb;en-us;148652】具體作法是 在項目屬性中 選擇 link 標籤,選中 input 選項 在Object/library modules 上輸入nafxcwd.lib libcmtd.lib Ignore libraries 輸入nafxcwd.lib libcmtd.lib 從新編譯就能夠了 具體如圖所示ci
修改項目了link選項input
VS2005下問題解決方法it
當時程序最初是在VS下寫的後來將寫好的程序放在別的電腦上出現缺乏相應lib庫,後來就將MFC Class Link 方式改爲了 Static 方式io
可是從新編譯就開始報告了和後來在VC6.0下相同的錯誤,搜索了相應的網頁發現,有些人提出的解決方法和VC6.0下同樣,可是 按照那種方式修改不行,後來在繼續查找在一個BBS上看到一個帖子,他的問題和我類似,都是編譯release版本 沒有問題,可是編譯debug就不行編譯
根據那個bbs上的帖子講述進行如何修改module
2.在preprocessor definitions中添加_AFXDLL
3.project options中,將/MTd改爲/MDd(個人run-time library一概爲Debug Multith
readed DLL)原來是/MTd搜索