1. 程式人生 > >error LNK2001: 無法解析的外部符號 fatal error LNK1120: 1 個無法解析的外部命令(呼叫約定的問題)

error LNK2001: 無法解析的外部符號 fatal error LNK1120: 1 個無法解析的外部命令(呼叫約定的問題)

問題背景:

我在用MFC寫的一個單文件的程式呼叫以MFC通過.def模組匯出的DLL時出現瞭如下錯誤

 error LNK2001: 無法解析的外部符號 "unsigned short __cdecl SearchCtrl(struct tagPARAMS &,short)" ([email protected]@[email protected]@[email protected])
1>E:\Test\TestMFCA\Debug\TestMFCA.exe : fatal error LNK1120: 1 個無法解析的外部命令

解決過程:

上面是兩個連線錯誤,看了網上的很多解決方法一直沒有解決,這個DLL是我在別人的基礎之上增加了一些功能,呼叫約定設定我也並不清楚,然後自己又寫了一個簡單的模組匯出的MFC_DLL 直接通過了。。

之後我檢查了一下調用出錯的DLL配置(專案-》配置屬性-》高階-》呼叫約定)是stdcall ,,從錯誤報告上也看不出有和呼叫約定密切相關的提示。。。

解決方法:

MFC的程式預設(vs2010)呼叫方式為:__cdecl (/Gd)

MFC.def預設匯出的DLL的呼叫方式也是 __cdecl 

我的出問題的DLL是stdcall 

那麼把DLL或應用程式的呼叫方式配置一致就可以了

相關推薦

error LNK2001: 無法解析外部符號 fatal error LNK1120: 1 無法解析外部命令呼叫約定的問題

問題背景: 我在用MFC寫的一個單文件的程式呼叫以MFC通過.def模組匯出的DLL時出現瞭如下錯誤  error LNK2001: 無法解析的外部符號 "unsigned short __cdecl SearchCtrl(struct tagPARAMS &,sh

error LNK2019: 無法解析外部符號;fatal error LNK1120: 1 無法解析外部命令; 可能存在的問題

alt 配置 pan ron ima detail deb 16px 管理 一、問題:使用一個.lib出現如下錯誤 (我使用的環境 vs2012)   error LNK2019: 無法解析的外部符號 _SSL_CTX_new,該符號在函數 _main 中被引用;   fa

error LNK2005:已經在 XXX.obj 中定義/fatal error LNK1120: 1 無法解析外部命令

>main.obj : error LNK2005: "void __cdecl Creat_graph(struct graph *)" ([email protected]@[em

DLL呼叫錯誤:Error lnk 2019, Error lnk1120 1無法解析外部符號

手裡有一個別人編譯好的帶來了檔案,內容如下: ifndef G3_Quickview_RPC_EXPORT define G3_Quickview_RPC_API __declspec(dllexport) else define G3_Quic

QT、VS常見bug及解決辦法——VS錯誤 2 error LNK1120: 1 無法解析外部命令

這個問題的原因是有標頭檔案,但是找不到實現。 有兩個原因: 1.只包含了標頭檔案,只有這個函式的宣告,沒有包含這個函式的實現(實現一般放在cpp檔案中的)。所以只能通過編譯,連線不成功。 2.另一個原因是函式的宣告和實現都放在標頭檔案中了,一般要把宣告放標頭檔案中,實現放在c

error LNK1120: 1 無法解析外部命令詳細小問題解釋

由於自己寫程式碼時有不嚴謹,這個錯誤碰到過不少次。 首先,根據百度知道上的解釋: 這個問題的原因是有標頭檔案,但是找不到實現。 有兩個原因:1.只包含了標頭檔案,只有這個函式的宣告,沒有包含這個函式的實現(實現一般放在cpp檔案中的)。所以只能通過編譯,連線不成功。 2.

git 報錯:error: failed to push some refs to 'https://github.com/Anderson-An/******.git'已解決

提交push 報錯: $ git push origin masterTo https://github.com/Anderson-An/******.git ! [rejected] master -> master (fetch first)error: failed to push some r

解析DTS到建立device_從device_node到併入裝置驅動模型結合原始碼

從device_node到併入裝置驅動模型 此篇部落格有很多參考其他文章的內容,由於參考內容繁雜,不一一標註角標了,在末尾會貼上所有參考部落格的link,如有侵權,請聯絡本人處理,謝謝。 深入,並且廣泛 -沉默犀牛 上一篇文章已經詳細的分析了兩個問題: 1.如何根據

Error LNK2001 無法解析外部符號 的幾種情況及解決

VC++時經常會遇到連結錯誤LNK2001,該錯誤非常討厭,因為對於程式設計者來說,最好改的錯誤莫過於編譯錯誤,而一般說來發生連線錯誤時,編譯都已通過。產生連線錯誤的原因非常多,尤其LNK2001錯誤,常常使人不明其所以然。如果不深入地學習和理解VC++,要想改正連線錯誤LNK2001非常困難。 &

"error LNK2001: 無法解析外部符號 _sscanf " 問題 解決方法

問題場景: 使用VS2015的軟體開發環境中,在引用第三方檔案庫時,出現了 “libx264.a(ratecontrol.o) : error LNK2019: 無法解析的外部符號 _sscanf,該符號在函式 _x264_ratecontrol_new 中被引用” 等錯誤

C++工程編譯之“error LNK2001: 無法解析外部符號

今天一整天都在折騰“error LNK2001: 無法解析的外部符號”,就在頭疼不已的時候,總算是找到問題原因了:各個動態連結庫的編譯方式必須統一才行,要不然很容易對庫函式的引用產生衝突。簡單來說就是,如果使用的第三方函式庫編譯方式採用/MD,那麼主工程也應該

error LNK2001: 無法解析外部符號 "public: virtual struct QMetaObject const * __thiscall Widget::metaObject

其原因是系統無法訪問到Moc檔案。解決方案如下: 專案–>右鍵點選–>Qt Project Settings 檢查你的 MocDirectory 其值是否是 .\Generat

VS2013執行錯誤:error LNK2001: 無法解析外部符號

1>Goods.obj: error LNK2001:無法解析的外部符號 "int (* arr)[20]" ([email protected]@[email protected]) 1>Connect.obj: error LNK2001

ogre-procedural library building error LNK2001: 無法解析外部符號

在編譯ogre-procedural的lib時出現了很多錯誤,修改之後沒有報錯了 但是又出現如下問題:1>     正在建立庫 D:\Ogre\OgreAddOn\ogre-procedural\lib\Debug\OgreProcedural_d.lib 和物件 D:

Visual Studio Error LNK2001 無法解析外部符號 的幾種情況

        VC++時經常會遇到連結錯誤LNK2001,該錯誤非常討厭,因為對於程式設計者來說,最好改的錯誤莫過於編譯錯誤,而一般說來發生連線錯誤時,編譯都已通過。產生連線錯誤的原因非常多,尤其LNK2001錯誤,常常使人不明其所以然。如果不深入地學習和理解VC+

vc2008 錯誤:error LNK2001: 無法解析外部符號之一

error LNK2001: 無法解析的外部符號   "protected: virtual struct AFX_MSGMAP const * __thiscall ****::GetMessageMap(void)const " ([email protect

error lnk2001無法解析外部符號_main 無法解析外部符號[email 

這個問題表明你新建的是一個main型別函式(控制檯程式),而你的程式中有視窗程式,顯然是個win32函式,解決方法:專案-屬性-連結器-系統-子系統-把控制檯該為windows剛學WinAPI編譯遇到不少問題,LNK2019: 無法解析的外部符號 _main,該符號在函式 ___tmainCRTStartup

關於 error LNK2001: 無法解析外部符號 ___wargv問題

筆者用VS2010生成64位的MFC應用程式時發現,輸出中提示 1> uafxcwd.lib(appcore.obj) : error LNK2001: 無法解析的外部符號 ___wargv1>uafxcwd.lib(appcore.obj) : error L

error LNK2001: 無法解析外部符號 "public: void __thiscall Cmfc_DeleteFileDlg::OnBnClickedButton3(void)"

連結錯誤:出現這個2001錯誤,是因為連結失敗,然而連結失敗,又是因為以下原因:  1.你在標頭檔案中聲明瞭函式,但是cpp檔案缺少了函式實現部分。  2.忘了將這個.h,.cpp Add to project;  3.以上兩種情況都沒有做,沒有將它對應的lib檔案新增到

VS error LNK2001無法解析外部符號_CrtDbgReportW

本文提供的只是可能的一種解決方案,一種解決這個錯誤的思路,並不一定符合所有情況。 最近經常遇到這個錯誤,總是在解決後忘記怎麼解決的,下次又花費很多時間去找原因。今天,做個筆記,嗯。 首先,列出原因: 其次,給出解決方法: 這是解決前問題根源: