2013-05-20 80 views
2
1>------ Build started: Project: Setup, Configuration: Debug Win32 ------ 
1>BoxDemo.obj : error LNK2019: unresolved external symbol [email protected] referenced in function "private: void __thiscall BoxApp::BuildFX(void)" ([email protected]@@AAEXXZ) 
1>C:\Users\Josh\Documents\Game Institute\DirectX\Chapter 1\Projects\Setup\Debug\Setup.exe : fatal error LNK1120: 1 unresolved externals 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

我使用VS2012並嘗試使用Frank D Lunas DX11示例程序設置DX11。我不知道這個錯誤消息意味着什麼,任何幫助將不勝感激。DX11無法解析的外部設備


1>------ Build started: Project: Setup, Configuration: Debug Win32 ------ 
1>Effects11d.lib(EffectAPI.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function _D3DX11CompileEffectFromFile 
1>C:\Users\Josh\Documents\Game Institute\DirectX\Chapter 1\Projects\Setup\Debug\Setup.exe : fatal error LNK1120: 1 unresolved externals 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

回答

1

連接器找不到D3DX11CreateEffectFromMemory函數的定義。這個功能是Effects11框架的一部分。你需要鏈接Effects11.lib來建立這個程序。

以前,要開發DirectX應用程序,您必須安裝了DirectX SDK。 現在,獨立的DirectX SDK關注遺留問題,現在它是Windows SDK(從8.0版本開始)的一部分。你在安裝Visual Studio 2012時已經得到了它。

問題是現在這個SDK版本不包括Effect11框架等等。

有幾種方法來解決這個問題:

  1. 下載並安裝傳統的DirectX SDK。在編譯時你會得到一些警告,因爲舊的DirectX SDK和新的Windows SDK衝突。要解決這個問題,您可以切換到您的項目v110xp工具集或安裝Windows 7 SDK並切換到v100項目的選項。
  2. 在本示例程序的情況下,Luna先生在源代碼歸檔的Common文件夾中包含編譯庫。但我不確定它是否可以與Win8 SDK一起使用。
  3. 糾正源代碼並去掉Effect11的東西。如果你只是學習DirectX,這是不容易的方法。

從查Walbourn一些更多的解釋 - MSFT:

+0

我忘了提我使用Windows 7如果有什麼差別。我已安裝2010年6月的SDK,並使用Luna先生提供的Common文件夾,並鏈接上述所有內容,這就是我得到的結果。 – Cypras

+0

我在調試模式下重建了兩個Effect11庫,我得到了'Effects11.lib',所以我將它重命名爲'Effects11d.lib'並將它們複製到'common'文件夾中,現在我得到另一個錯誤:(請參見第一篇文章) – Cypras

+0

Windows SDK的一個不會與Windows 7一起工作,人們總是忘記提及這一遍。 Windows目前一團糟。他們推動Windows 10的東西,貶低Windows 7,同時支持Windows 7的永恆,使開發者難以做出決定。客戶有Windows 7,所以我們必須繼續支持它。 – Epirocks