使用vc6開發dll時,遇到如下的警告和錯誤:
warning lnk4022: cannot find unique match for symbol "installwinio"
link : fatal error lnk1152: cannot resolve one or more undecorated symbols
link : fatal error lnk1141: failure during build of exports file
出現上面這個警告的原因,是因為在我的這個dll程式中,需要對外開放的介面名稱是installwinio,同時還有另外的乙個類的成員函式名字也是installwinio,這就導致編譯器在編譯的時候不能夠清楚的知道到底是對外輸出那個介面,所以才出現上面的問題;
從msdn上查到如下的一句話:
link 或 lib 找到了給定未修飾符號的多個匹配項,但未能解決多義性。
沒有生成任何輸出檔案(.exe、.dll、.exp 或 .lib)。
該警告之後,每個重複符號都有乙個警告 lnk4002,最後是錯誤 lnk1152。
若要防止此警告,請指定修飾形式的符號。
在物件上執行 dumpbin 以檢視修飾名。
這裡所謂的指定修飾形式,是指使用extern形式的宣告顯示的指定一下是那個介面對外開放:
extern "c" int pascal export installwinio();
鏈結器工具錯誤 LNK2001
無法解析的外部符號 symbol 引用了鏈結器無法在庫和物件檔案中找到的內容 如函式 變數或標籤 可能的原因 該錯誤資訊之後為致命錯誤 lnk1120。具體原因 問題 編譯和鏈結問題 將用 mt 編譯的 與庫 libc.lib 鏈結會在 beginthread beginthreadex endth...
鏈結器工具錯誤 LNK2001
無法解析的外部符號 symbol 引用了鏈結器無法在庫和物件檔案中找到的內容 如函式 變數或標籤 可能的原因 該錯誤資訊之後為致命錯誤 lnk1120。具體原因 問題 編譯和鏈結問題 將用 mt 編譯的 與庫 libc.lib 鏈結會在 beginthread beginthreadex endth...
鏈結器工具錯誤 LNK1123
轉換到 coff 期間失敗 檔案無效或損壞 輸入檔案必須具有通用物件檔案格式 coff 格式。如果輸入檔案不是 coff,link 則鏈結器會自動嘗試將 32 位 omf 物件轉換為 coff,或執行 cvtres.exe 來轉換資源檔案。此訊息指示鏈結器不能轉換該檔案。從另乙個安裝的 visual...