VS2008編譯問題!

2021-06-04 23:50:02 字數 749 閱讀 8339

vs2005鏈結問題: lnk2005錯誤 :error lnk2005: _free 已經在 libcmtd.lib(dbgheap.obj) 中定義

以前經常遇到這個警告資訊,因為執行並沒有什麼問題,所以也沒深究。但是耿耿於懷那個「 0 個錯誤,0 個警告」的成功提示,在網上搜了一下。原來問題出在預設庫的引用選擇上。

vs2008,專案——屬性——配置屬性——c/c++——**生成:他有/mt,/mtd,/md,/mdd四個選項,你必須讓所有使用的庫都使 用相同的配置,否則就會有相應的提示,甚至可能會出現無法解析的函式。有時我們使用的庫不是自己可以控制的,那麼就只能把工程屬性設定成河你使用的庫相同 的選項。

錯誤 1 error lnk2005: _free 已經在 libcmtd.lib(dbgheap.obj) 中定義         msvcrt.lib

錯誤 2 error lnk2005: _malloc 已經在 libcmtd.lib(dbgheap.obj) 中定義     msvcrt.lib

如果有一堆的重定義錯誤發生在同乙個lib中,而且跟它衝突的也是同乙個lib,那麼這個兩個lib的功能應該是一樣的,可以2選一,只要在「忽略特定的庫」內填入需要忽略的庫。

專案屬性-配置屬性-常規-mfc的使用:在共享 dll 中使用 mfc  // 我是通過該方法解決的

編譯通過,但是執行會出錯,最後還是恢復了

最後在 連線->input->additional dependencies 裡面加入了

編譯通過,執行也沒有問題。

VS2008編譯問題

將之前版本的程式拿來用vs2008重新編譯發現好多編譯問題,比如 1 提示 fatal error c1083 cannot open include file mclmcrrt.h no such file or directory 試試 該vs2008的程式使用的matlab的庫,預設的vs d...

vs2008 編譯驅動

一 c c 屬性設定 1.新增包含檔案 wdk inc crt wdk inc api wdk inc ddk 2.設定目標平台 preprocessor x86 3.修改呼叫約定為 stdcall gz 4.執行時庫選擇 多執行緒除錯 mtd 或者多執行緒 mt 基本執行時檢查 預設值 二 lin...

vs2008 編譯驅動

一 c c 屬性設定 1.新增包含檔案 wdk inc crt wdk inc api wdk inc ddk 2.設定目標平台 preprocessor x86 3.修改呼叫約定為 stdcall gz 二 linker 屬性設定 1.general 輸出檔案 自己定義 如 output test...