解決MFC開發(fā)調(diào)用外部庫出現(xiàn)的__declspec(dllimport)無法解析的外部符號(hào)問題
在進(jìn)行MFC開發(fā)時(shí),經(jīng)常會(huì)遇到調(diào)用外部庫出現(xiàn)“error LNK2019: 無法解析的外部符號(hào) "__declspec(dllimport) public: static void __cdecl x
在進(jìn)行MFC開發(fā)時(shí),經(jīng)常會(huì)遇到調(diào)用外部庫出現(xiàn)“error LNK2019: 無法解析的外部符號(hào) "__declspec(dllimport) public: static void __cdecl xercesc_2_8::XMLPlatformUtils::Terminate(void)" (__imp_?@xercesc_2_8@@SAXXZ),該符號(hào)在函數(shù)"__catch$?@@QAE_NAAV?$?$@std@@V?$@2@@std@@@Z$0”中被引用”的錯(cuò)誤。這種情況通常是由于調(diào)用庫出現(xiàn)了問題。那么我們應(yīng)該如何解決呢?
步驟一:拷貝生成的lib文件并加入工程中
編譯dll工程時(shí)除了生成dll文件之外,還會(huì)得到一個(gè)對(duì)應(yīng)的lib文件。我們需要將這個(gè)lib文件拷貝到工程目錄下,并將其加入到工程中。
步驟二:配置附加包含目錄和庫目錄
在項(xiàng)目屬性設(shè)置中,進(jìn)入“C/C -> 附加包含目錄”,填寫附加頭文件所在的目錄路徑,多個(gè)目錄之間用分號(hào)分隔。然后在“鏈接器 -> 常規(guī) -> 附加庫目錄”中填寫附加依賴庫所在的目錄路徑,同樣也可以用分號(hào)分隔多個(gè)目錄。
步驟三:添加依賴項(xiàng)和聲明外部庫
繼續(xù)在項(xiàng)目屬性中,進(jìn)入“鏈接器 -> 輸入 -> 附加依賴項(xiàng)”,填寫需要依賴的庫名字以.lib結(jié)尾,同樣使用空格或分號(hào)分隔多個(gè)庫。此外,在stdafx.h文件中聲明添加的外部庫,格式如下:
```cpp
include "seglib.h"
pragma comment(lib, "")
pragma comment(lib, "opencv_")
```
步驟四:調(diào)整庫的模式匹配
確保添加的.lib庫與當(dāng)前編譯模式匹配。在Debug模式下應(yīng)添加Debug版本的庫,在Release模式下應(yīng)添加Release版本對(duì)應(yīng)的庫,否則會(huì)出現(xiàn)鏈接錯(cuò)誤。
步驟五:正確放置dll文件
最后,將所需的dll文件放置在程序編譯生成的debug或release目錄下。若編譯時(shí)提示缺少某個(gè)dll,則將該dll放置在相應(yīng)的目錄下即可解決該問題。
通過以上幾個(gè)步驟,我們可以有效解決調(diào)用外部庫時(shí)出現(xiàn)的__declspec(dllimport)無法解析的外部符號(hào)問題,確保項(xiàng)目順利編譯和鏈接。希望這些方法能幫助到開發(fā)者解決類似的困擾。