2014-01-05 122 views
0

好吧,我正在學習DirectX 11,並試用了Frank D Luna的Direct3D簡介中的BoxDemo代碼。但我得到以下鏈接錯誤:DirectX 11 Effects11.lib Effects11d.lib鏈接器錯誤

Effects11.lib(EffectAPI.obj):錯誤LNK2001:解析外部符號D3DCompileFromFile

我聽說我必須建立在Effects11.lib釋放調試模式。我也有點吮吸。我所做的是去Samples \ C++ \ Effects11 \文件夾。在VS2012中打開了解決方案,並在Release和Debug模式下構建了Effects11.lib。重命名調試一個Effects11d.lib。將兩個庫放在項目文件夾中,並將它們添加到鏈接器 - >輸入 - >附加依賴項中。我的目標平臺是x64,我的include目錄同樣指向directx include和lib目錄。

那麼我的問題是什麼?爲什麼編譯器無法找到Effects11.lib?我做對了嗎?請幫幫我 。 在此先感謝

編輯:所以我的問題在於可能與d3dcompiler.lib。但我已經在鏈接器 - >輸入中添加了d3dcompiler.lib。但是當構建Effects11.lib時,我還必須添加d3dcompiler.lib嗎?

+0

什麼是您的「額外的庫目錄」設置爲:「$(DXSDK_DIR)\ Lib \ x86」或「$(DXSDK_DIR)\ Lib \ x64」?如果它是前者,並且您的目標是x64,那麼您將鏈接到錯誤的庫。 – Proxy

回答

0

嘗試在發佈模式下連接Effects11.lib,在調試模式下連接Effects11d.lib。作家弗蘭克D盧娜使用我使用的默認路徑併爲我工作。其他路徑不適合我。仍然不確定

0

問題不在於Effects11.lib無法找到。編譯器告訴你的是,在鏈接時無法找到Effects11.lib中的符號(在本例中爲D3DCompileFromFile)。

根據http://msdn.microsoft.com/en-us/library/windows/desktop/hh446872.aspx,您需要鏈接包含D3DCompileFromFile的庫,該庫看起來是D3dcompiler.lib。

+0

構建Effects11.lib時或在嘗試構建項目時,是否必須鏈接d3dcompiler.lib?我已經在鏈接器中包含了d3dcompiler.lib。 – Soulslayer

+0

@ user3163223您甚至不需要鏈接到D3DCompiler.lib。只要確保你的程序分發D3DCompiler.dll。 – Proxy

+0

對不起,這可能聽起來很愚蠢。你的意思是我在編譯時必須在項目文件夾中添加D3DCompiler.dll? – Soulslayer