2011-08-09 148 views
4

有誰知道這意味着什麼?C++無法解析的外部信息

1> Generating Code... 
1>BlankWindowDXbaseImpl.obj : error LNK2019: unresolved external symbol "public: __thiscall DXBase::DXBase(void)" ([email protected]@[email protected]) referenced in function "public: __thiscall BlankWindowDXBaseImpl::BlankWindowDXBaseImpl(void)" ([email protected]@[email protected]) 
1>BlankWindowDXbaseImpl.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall DXBase::~DXBase(void)" ([email protected]@[email protected]) referenced in function "public: virtual __thiscall BlankWindowDXBaseImpl::~BlankWindowDXBaseImpl(void)" ([email protected]@[email protected]) 
1>main.obj : error LNK2019: unresolved external symbol "public: void __thiscall DXBase::shutdown(void)" ([email protected]@@QAEXXZ) referenced in function [email protected] 
1>main.obj : error LNK2019: unresolved external symbol "public: bool __thiscall DXBase::initalize(struct HINSTANCE__ *,struct HWND__ *)" ([email protected]@@[email protected]@[email protected]@@Z) referenced in function [email protected] 
1>C:\backup\development\directXworkspace\BlankWindow\Debug\BlankWindow.exe : fatal error LNK1120: 4 unresolved externals 

回答

12

這意味着你有無法解析的外部符號。

什麼是符號?符號可以是任何變量,類,成員函數或函數。

爲什麼它們沒有解決?您的代碼(或您正在使用的庫)的某些部分依賴於這些符號,因爲您沒有鏈接正確的庫或實現它們而沒有找到它們。

+0

你是對的,鏈接器找不到正確的lib。但是,在VS2010中,我將lib路徑設置爲包含所需lib的路徑。它根本就不會找到它。我剛剛厭倦了,並將類和頭移到同一個項目中,所以它在本地找到了lib。 – Sublimemm

+2

顯然你做得不對,因爲這是正常的事情。在光顧的風險中,您需要1)將庫目錄添加到「常規/附加庫目錄」中2)將庫本身添加到「輸入/附加依賴關係」3)請參考.lib時不要忘記.lib庫在第2步。 – john

1

這意味着你有一個鏈接器的問題。 (鏈接器找不到包含這些符號的庫)您需要在庫路徑中包含所需的庫。

0

可能你沒有鏈接到正確的庫。

但是,你應該提供一些更多的細節..它看起來像你在問答比賽中提問。

3

是的,這意味着你的程序調用已聲明但沒有主體的函數。

您是否期待這些功能成爲您的代碼的一部分,或由某個庫提供?

+0

簡單,直截了當。讓我馬上發現我的錯誤! – absentmindeduk

0

我剛剛有同樣的問題,如果您添加#pragma註釋(lib,「d3d9.lib」) 這將包括編譯您的代碼所需的庫文件。它只是混淆了哪個lib文件來獲取64位或32位。希望這可以幫助。