有關 sprintf函式重定義錯誤的思考

2021-08-29 21:24:28 字數 498 閱讀 5197

**:blog.csdn.net/clever101

最近使用vs c++2005編乙個mfc共享dll,在沒有編譯錯誤,但是在鏈結時出現一大堆諸如

error lnk2005: _sprintf 已經在msvcrtd.lib(msvcr80d.dll) 中定義

的鏈結錯誤。

開始不解,後來想了一下,錯誤可能是這個dll

使用乙個底層的c

靜態庫造成的。之前我也使用vs c++2005

編譯了該c

靜態庫。我想估計是執行時庫不一致造成的。我檢視了c

靜態庫執行時庫使用的是多執行緒靜態調式庫,如下圖的多執行緒除錯(mtd):

而dll

使用的是多執行緒除錯dll

(/mdd

)。二者執行時庫不一致導致很多函式重定義。解決辦法就是將c

靜態庫的執行時庫改為多執行緒除錯dll

(/mdd

)。現在我想底層庫和上層庫、呼叫與被呼叫之間必須確保使用相同的執行時庫。

MFC 重定義入口函式

將以下 加入工程的主cpp檔案就可以了 int afxapi afxwinmain hinstance hinstance,hinstance hprevinstance,in lptstr lpcmdline,int ncmdshow nreturncode pthread exitinstanc...

函式宣告錯誤以及函式重定義

1.在標頭檔案宣告中出現錯誤 void to report lol data detail std map std string std string ojb error c2039 string 不是 std 的成員 error c2065 string 未宣告的識別符號 error c2065 ...

C 函式過載 函式重定義 以及函式重寫

在c 的學習中,肯定免不了對一些概念的辨析,但往往很多時候,百思不得其解。問題的關鍵在於自己是否注意到了一些細節。函式過載是什麼?其實,我們大可以認為這是編譯器的一種機制,他會根據函式的相關特性來自動對你所呼叫的函式進行匹配,自動選擇匹配的函式,從而這種自動匹配選擇從而呼叫對應的函式的機制,我們就可...