DirectX11--教程項目無法編譯、運行的解決方法


綜述

對於Win10系統的大多數用戶來說,可以直接編譯本教程對應的項目並運行。但也有部分用戶由於某些原因可能會出現無法編譯的情況。

DirectX11 With Windows SDK完整目錄

歡迎加入QQ群: 727623616 可以一起探討DX11,以及有什么問題也可以在這里匯報。

與當前項目的Windows SDK版本不一致

對於Visual Studio 2017,你可以點擊項目-重定解決方案目標,選擇你當前擁有的SDK版本即可。

如果沒有上述選項,你需要全選所有項目,並在項目屬性-常規中,將Windows SDK版本改為當前你擁有的SDK版本。

存在大量的編譯錯誤

此問題僅針對SDK版本在10.0.162099.0以下,並且是使用VS2017的情況。

由於在Visual Studio 2017版本15.5及更高版本所創建的新項目中,新增了編譯器的標准符合性模式(/permissive-),並且該選項默認是開啟的。該選項用於檢測一些非標准C++語言的寫法,並且僅支持從10.0.162099.0開始到目前最新版本的Windows SDK。舊版本的Windows SDK在編譯時會引發大量的編譯錯誤,需要在項目屬性- C/C++ -語言中,將符合模式設為

注意: 在低版本的Visual Studio 2017,以及Visual Studio 2015是沒有標准符合性模式的設置的,並且默認為

具體可以參考 觸發-(標准符合性)

Debug模式下打開程序出現D3D11CreateDevice Failed

這種情況下Release模式應該還是可以運行的,現在查看調試輸出窗口應該會有如下信息

目前已經確認是你電腦的Win10系統沒有安裝圖形工具。首先點擊Win-Windows 管理工具-服務

找到服務(本地)中的Windows Update項,如果沒有啟用,則將它啟動。

然后右鍵Win-設置,搜索:管理可選功能,進去后查看現在可選功能是否包含了圖形工具,若沒有則添加該功能,安裝完成后可以看到:

現在應該可以進行調試了

提示Direct3D Feature Level 11 unsupported

出現這個說明你的顯卡不支持特性等級11.0,你可以嘗試給特性等級數組添加D3D_FEATURE_LEVEL_10_1D3D_FEATURE_LEVEL_10_0,然后將所有的HLSL編譯器使用的着色器模型下調至Shader Model 4.0,還要在所有CreateShaderFromFile函數中下調。

Windows 7系統無法直接運行的解決方法

在編寫該項目的時候一開始是只考慮了Win 10 系統,沒有考慮向下兼容的,但現在既然要做到兼容(可能是部分兼容),還需要在原有的項目基礎進行一些額外的配置。

無法定位程序輸入點CreateFile2於動態鏈接庫kernel32.dll上

CreateFile2函數僅Windows 8以上的系統支持,該函數在DDSTextureLoader中用到,但我們可以通過修改_WIN32_WINNT的值來讓它使用CreateFileW

在項目屬性-C/C++ -預處理器中按下面的方式添加宏:

然后重新編譯解決方案/項目即可。

從本教程項目08起都無法看到文字

考慮到不應該只是因為無法看到文字就讓程序運行不了,經過修改后,如果你的系統不支持DirectX 11.1,則將不會顯示文字。如果你想要在Windows 7系統上看到項目的文字,則需要:

  1. 更新Windows 7系統直到安裝了Service Pack 1
  2. 安裝KB2670838補丁

缺少d3dCompiler_47.dll

Windows 7系統通常情況下是缺少該動態庫的,但如果你裝了Visual Studio 2015/2017,通常會包含該動態庫供使用。為此,你需要從Visual Studio的安裝路徑中找到運行庫對應的版本,如:
Windows SDK 8.1對應C:\Program Files (x86)\Windows Kits\8.1\Redist\D3D,然后再根據x64還是x86將里面的d3dCompiler_47.dll復制到你的項目,或者C:\Windows\System32中。

缺少api-ms-win-core-libraryloader-l1-1-0.dll

出現該問題是因為將不合適的d3dCompiler_47.dll拉入到項目或系統環境中,參照上一條進行操作。

DirectX11 With Windows SDK完整目錄

歡迎加入QQ群: 727623616 可以一起探討DX11,以及有什么問題也可以在這里匯報。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM