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