[英]D3D11CreateDeviceAndSwapChain Unresolved External
這完全讓我瘋狂。 當我編譯我的程序時,我收到以下錯誤消息:
錯誤LNK2019:未解析的外部符號_D3D11CreateDeviceAndSwapChain @ 48
我知道我擁有所有正確的lib /和include目錄(x86),我已經跟蹤了這個問題,如果我去定義(F12),我得到兩個符號,一個用於DirectXSDK安裝目錄,和一個在“c:\\ Program Files(x86)\\ Windows Kits \\ 8.0 \\ Include \\ um”。
對於我的生活,我不知道該怎么做。 我已經瀏覽了所有包含/排除目錄,我無法解決它,我不知道該怎么做。 誰能幫我?
我自己遇到了這個錯誤,並在評論中用Luke的建議解決了這個問題。
假設您正在使用Visual Studio,請嘗試打開項目的屬性窗口,然后導航到鏈接器 - >輸入。 在“附加依賴項”下添加d3d11.lib
,然后再次嘗試鏈接。
好的。 在駕駛瘋狂之前,請查看:
你鏈接到與你的應用程序相同的架構:x86,x64,arm(這是常見的騙局=))
C:\\Program Files (x86)\\Windows Kits\\8.0\\Lib\\win8\\um\\x86
C:\\Program Files (x86)\\Windows Kits\\8.0\\Lib\\win8\\um\\x64
C:\\Program Files (x86)\\Windows Kits\\8.0\\Lib\\win8\\um\\arm
你從同一個sdk鏈接lib作為你的標題(在你的源代碼中,嘗試顯式鍵入路徑):
#include "c:\\Program Files (x86)\\Windows Kits\\8.0\\Include\\um\\header.h"
#pragma comment(lib, "C:\\\\Program Files (x86)\\\\Windows Kits\\\\8.0\\\\Lib\\\\win8\\\\um\\\\x64\\\\library.lib")
檢查libs本身是否正常(存在,沒有損壞):卸載舊的DXSDK和Win8SDK,然后重新安裝其中一個,嘗試它,而不是另一個。 (另外,最好只從舊SDK中復制某個文檔和教程,卸載它並完全忘記它)
嘗試新的帶有詳細標志的#pragma linker
(而不是#pragma lib
)來獲得一些鏈接器輸出:
#define USE_OLD_DXSDK
#ifdef USE_OLD_DXSDK
#pragma comment(linker "c:\\\\path\\\\to\\\\old_sdk\\\\d3d11.lib -verbose")
#else
#pragma comment(linker, "c:\\\\path\\\\to\\\\new_sdk\\\\d3d11.lib -verbose")
#endif
另一種方式:創建一個新的小應用程序並嘗試從頭開始編寫D3D11CreateDeviceAndSwapChain
。 只有#include
並link
現在需要的東西,沒有別的。 嘗試重現鏈接器錯誤,以了解它為什么會發生,並找出如何在主應用程序中修復它。
快樂的編碼!
重新檢查IDE的libs並確保您的IDE使用Unicode字符集,並且正確使用unicode函數和字符串。 另外,如果\\ lib \\ x86(如果是這種情況,則為x64)檢查兩次,是否已正確添加到項目的庫中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.