簡體   English   中英

D3D11CreateDeviceAndSwapChain Unresolved External

[英]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 只有#includelink現在需要的東西,沒有別的。 嘗試重現鏈接器錯誤,以了解它為什么會發生,並找出如何在主應用程序中修復它。

快樂的編碼!

重新檢查IDE的libs並確保您的IDE使用Unicode字符集,並且正確使用unicode函數和字符串。 另外,如果\\ lib \\ x86(如果是這種情況,則為x64)檢查兩次,是否已正確添加到項目的庫中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM