關於靜態編譯

2021-03-31 08:56:58 字數 911 閱讀 3262

出現以下錯誤的解決方案:

nafxcw.lib(afxmem.obj) : error lnk2005: "void * __cdecl operator new(unsigned int)" (??2@yapaxi@z) already defined in libcmt.lib(new.obj) nafxcw.lib(afxmem.obj) : error lnk2005: "void __cdecl operator delete(void *)" (??3@yaxpax@z) already defined in libcmt.lib(delete.obj) release/demo.exe : fatal error lnk1169: one or more multiply defined symbols found

解決方案

解決該問題有兩種方法:第一種解決方案涉及到強制鏈結程式按照正確的順序鏈結庫。第二種解決方案是讓您查詢導致問題的模組並糾正它。

解決方案一:強制鏈結程式按照正確的順序鏈結庫

1. 在「生成

」選單上,單擊「設定

」。

2. 在

「專案設定

」對話方塊的

「以下專案的設定

」檢視中,單擊以選中出現鏈結錯誤的專案配置。

3. 在「鏈結

」選項卡上,單擊以選中「類別

」組合框中的

「input」。

4. 在

「要忽略的庫

」中,插入庫名(例如,nafxcwd.lib;libcmtd.lib)。

注意:等效的鏈結程式命令列是:/nodlibrary name>。

5. 在「物件

/庫模組

」框中,插入庫名。必須確保這些庫按順序列出,且作為命令列中的前兩個庫(例如,

nafxcwd.lib 和 libcmtd.lib)列出。

關於使用VS2015靜態編譯

首先必須搞清楚專案 專案屬性 配置屬性 c c 生成 執行庫中四個選項的關係 多執行緒除錯dll mdd 對應 md dynamicdebug 多執行緒dll md 對應 md dynamicrelease 多執行緒 mt 對應 md staticrelease 多執行緒 mtd 對應 md sta...

Qt編譯生成靜態庫(靜態編譯)

開發環境 vs2008 qt4.8.4原始碼庫 其他環境請自己嘗試,原理應該是差不多的 qt編譯生成靜態庫1.本教程只針對在win32平台,使用vs開發工具 例子以vs2008為例 2.3.解壓qt源 到目標目錄,如 4.開啟 mkspecs 目錄,找到目標平台的資料夾,如 win32 msvc20...

關於微軟Detours包編譯和靜態鏈結

只說兩點卡過我的地方 1 如何編譯。網上一般的解釋是只要安裝過vc或者vs的計算機,在detours的src目錄下使用nmake就可以成功編譯。我想,這樣實驗的人可能會有不少會得到這麼一句話 nmake不是內部命令,也不是外部命令。這是因為vs 僅限2008,其它版本不清楚 安裝後,並沒有將nmak...