1.error LNK2019:unresolved external symbol *** referenced in functio...
當(dāng)頭文件中聲明了一個函數(shù),但是在相應(yīng)的源文件中卻沒有對該函數(shù)進(jìn)行定義,則會出現(xiàn)為“解決的外部符號”(unresolved external symbol )錯誤。另外,當(dāng)一個函數(shù)調(diào)用了外部的一個庫文件中的函數(shù),但是在當(dāng)前project的properties中并沒有將所依賴的(dependent)庫文件包含進(jìn)來時,也會出現(xiàn)這種錯誤。
綜上,當(dāng)一個solution在linking時找不到所涉及到的函數(shù)的定義時就會出現(xiàn)“unresolved external symbol ”錯誤。
例如,下面是調(diào)用rapi的庫文件rapi.lib中的函數(shù)時,由于沒有將rapi.lib包含進(jìn)來而導(dǎo)致的鏈接錯誤。
1>Linking...
WMFileSync.obj : error LNK2019: unresolved external symbol _CeFindClose@4 referenced in function "public: virtual long __stdcall CWMFileSync::IsFileExists(wchar_t *)" (?IsFileExists@CWMFileSync@@UAGJPA_W@Z)
【解決方案】
1. Project -> ** Properties... -> Configuration Properties -> Linker -> Input -> Additional Dependencies -> rapi.lib
另外,在此之前,還需添加rapi庫的相應(yīng)目錄:Tools -> Options -> Projects and Solutions -> VC++ Directories -> Show Directories for -> 在Include files中添加C:\Program Files\Matrox Imaging\rapi\Include 以及 Tools -> Options -> Projects and Solutions -> VC++ Directories -> Show Directories for -> 在Library files中添加C:\Program Files\Matrox Imaging\rapi\LIB。添加目錄的目的是為了使VC在調(diào)用相應(yīng)庫文件時不必總是使用絕對地址,VC可以通過文件名在所包含的目錄中進(jìn)行搜索。這樣,前面的rapi.lib就不必使用絕對地址了。
【缺點(diǎn)】可移植性差,如果將原工程中的源文件和頭文件中的內(nèi)容copy下來重新建立該工程時(例如:在電子書或網(wǎng)絡(luò)上找到的程序),仍需自己在工程中添加目錄及所需的庫文件。
2. 在程序前加入#pragma commet(lib, "rapi.lib")也可以達(dá)到相同的效果。