VS2017: error Link 2019 (DirectX11 配置運行時出現無法解析的外部符號_D3DCompileFromFile@36)

 

 

無法解析的外部符號問題,可能的原因

  1. 出現無法解析可能是因爲lib文件不正確,比如64位的編譯配置,結果使用的是32位的lib包.
  2. 只寫了類聲明,但還沒有寫實現類,造成調用時無法解析
  3. 聲明和定義沒有統一,造成鏈接不一致,無法解析
  4. 沒有在項目屬性頁的鏈接器的命令行選項加入相應的類包。
  5. 沒有在c++包含目錄和庫目錄加入相應的類包路徑
  6. 在測試工程中被測文件目錄可能需要包含被測類的cpp定義文件
  7. ICE接口測試時,無法解析可能因爲被測文件沒有包含進相關的cpp文件,另外,在TestSuite_ProjectRun.h文件中需要包含IProjectRun.h頭文件,及相關的頭文件(舉例)[7]import相關的無法解析內容,解決辦法是在鏈接器的依賴項中加入相應的動態庫
  8. error LNK 2019 :一般是動態庫沒有包進來。 
  9. error LNK2001: 無法解析的外部符號 __imp___CrtDbgReportW
    工程屬性,C/C++,代碼生成,運行時庫選擇MDd,
  10. 能是工程配置文件中有多餘選項,請參考其他模塊的配置選項,不要有多餘配置。

    原文鏈接:https://blog.csdn.net/enotswn/article/details/5934938。

 

博主環境爲Win10+VS2017,運行基於Direct 11的程序時出現LNK2019錯誤如下:

error LNK2019:未解析的外部符號_D3DCompileFromFile @ 36在函數中引用 _D3DX11CompileEffectFromFile...

參考可能原因8,可添加部分配置文件解決該問題:

一、   進入 項目->屬性->配置屬性->鏈接器->常規->附加庫目錄 如下圖所示:

添加

$(WindowsSDK_LibraryPath_x86)

二、添加必要的lib庫

進入 項目->屬性->配置屬性->鏈接器->輸入->附加依賴項 ,如下圖:

Direct 11需要添加的lib庫如下:

d3d11.lib
d3dx11d.lib
D3DCompiler.lib
dxerr.lib
dxgi.lib
dxguid.lib
DInput8.lib
DirectXTK.lib
筆者自認才疏學淺,僅略知皮毛,文中錯謬之處在所難免,若蒙諸君不吝告知,將不勝感激
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章