1.error LNK2019:unresolved external symbol *** referenced in functio...
當(dāng)頭文件中聲明了一個(gè)函數(shù),但是在相應(yīng)的源文件中卻沒(méi)有對(duì)該函數(shù)進(jìn)行定義,則會(huì)出現(xiàn)為“解決的外部符號(hào)”(unresolved external symbol )錯(cuò)誤。另外,當(dāng)一個(gè)函數(shù)調(diào)用了外部的一個(gè)庫(kù)文件中的函數(shù),但是在當(dāng)前project的properties中并沒(méi)有將所依賴的(dependent)庫(kù)文件包含進(jìn)來(lái)時(shí),也會(huì)出現(xiàn)這種錯(cuò)誤。
綜上,當(dāng)一個(gè)solution在linking時(shí)找不到所涉及到的函數(shù)的定義時(shí)就會(huì)出現(xiàn)“unresolved external symbol ”錯(cuò)誤。
例如,下面是調(diào)用rapi的庫(kù)文件rapi.lib中的函數(shù)時(shí),由于沒(méi)有將rapi.lib包含進(jìn)來(lái)而導(dǎo)致的鏈接錯(cuò)誤。
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庫(kù)的相應(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)庫(kù)文件時(shí)不必總是使用絕對(duì)地址,VC可以通過(guò)文件名在所包含的目錄中進(jìn)行搜索。這樣,前面的rapi.lib就不必使用絕對(duì)地址了。
【缺點(diǎn)】可移植性差,如果將原工程中的源文件和頭文件中的內(nèi)容copy下來(lái)重新建立該工程時(shí)(例如:在電子書(shū)或網(wǎng)絡(luò)上找到的程序),仍需自己在工程中添加目錄及所需的庫(kù)文件。
2. 在程序前加入#pragma commet(lib, "rapi.lib")也可以達(dá)到相同的效果。