DirectX11--教程项目无法编译、运行的解决方法
綜述
對(duì)于Win10系統(tǒng)的大多數(shù)用戶來說,可以直接編譯本教程對(duì)應(yīng)的項(xiàng)目并運(yùn)行。但也有部分用戶由于某些原因可能會(huì)出現(xiàn)無法編譯的情況。
DirectX11 With Windows SDK完整目錄
歡迎加入QQ群: 727623616 可以一起探討DX11,以及有什么問題也可以在這里匯報(bào)。
與當(dāng)前項(xiàng)目的Windows SDK版本不一致
對(duì)于Visual Studio 2017,你可以點(diǎn)擊項(xiàng)目-重定解決方案目標(biāo),選擇你當(dāng)前擁有的SDK版本即可。
如果沒有上述選項(xiàng),你需要全選所有項(xiàng)目,并在項(xiàng)目屬性-常規(guī)中,將Windows SDK版本改為當(dāng)前你擁有的SDK版本。
存在大量的編譯錯(cuò)誤
此問題僅針對(duì)SDK版本在10.0.162099.0以下,并且是使用VS2017的情況。
由于在Visual Studio 2017版本15.5及更高版本所創(chuàng)建的新項(xiàng)目中,新增了編譯器的標(biāo)準(zhǔn)符合性模式(/permissive-),并且該選項(xiàng)默認(rèn)是開啟的。該選項(xiàng)用于檢測一些非標(biāo)準(zhǔn)C++語言的寫法,并且僅支持從10.0.162099.0開始到目前最新版本的Windows SDK。舊版本的Windows SDK在編譯時(shí)會(huì)引發(fā)大量的編譯錯(cuò)誤,需要在項(xiàng)目屬性- C/C++ -語言中,將符合模式設(shè)為否。
注意: 在低版本的Visual Studio 2017,以及Visual Studio 2015是沒有標(biāo)準(zhǔn)符合性模式的設(shè)置的,并且默認(rèn)為否。
具體可以參考 觸發(fā)-(標(biāo)準(zhǔn)符合性)
Debug模式下打開程序出現(xiàn)D3D11CreateDevice Failed
這種情況下Release模式應(yīng)該還是可以運(yùn)行的,現(xiàn)在查看調(diào)試輸出窗口應(yīng)該會(huì)有如下信息
目前已經(jīng)確認(rèn)是你電腦的Win10系統(tǒng)沒有安裝圖形工具。首先點(diǎn)擊Win-Windows 管理工具-服務(wù)
找到服務(wù)(本地)中的Windows Update項(xiàng),如果沒有啟用,則將它啟動(dòng)。
然后右鍵Win-設(shè)置,搜索:管理可選功能,進(jìn)去后查看現(xiàn)在可選功能是否包含了圖形工具,若沒有則添加該功能,安裝完成后可以看到:
現(xiàn)在應(yīng)該可以進(jìn)行調(diào)試了
提示Direct3D Feature Level 11 unsupported
出現(xiàn)這個(gè)說明你的顯卡不支持特性等級(jí)11.0,你可以嘗試給特性等級(jí)數(shù)組添加D3D_FEATURE_LEVEL_10_1和D3D_FEATURE_LEVEL_10_0,然后將所有的HLSL編譯器使用的著色器模型下調(diào)至Shader Model 4.0,還要在所有CreateShaderFromFile函數(shù)中下調(diào)。
Windows 7系統(tǒng)無法直接運(yùn)行的解決方法
在編寫該項(xiàng)目的時(shí)候一開始是只考慮了Win 10 系統(tǒng),沒有考慮向下兼容的,但現(xiàn)在既然要做到兼容(可能是部分兼容),還需要在原有的項(xiàng)目基礎(chǔ)進(jìn)行一些額外的配置。
無法定位程序輸入點(diǎn)CreateFile2于動(dòng)態(tài)鏈接庫kernel32.dll上
CreateFile2函數(shù)僅Windows 8以上的系統(tǒng)支持,該函數(shù)在DDSTextureLoader中用到,但我們可以通過修改_WIN32_WINNT的值來讓它使用CreateFileW。
在項(xiàng)目屬性-C/C++ -預(yù)處理器中按下面的方式添加宏:
然后重新編譯解決方案/項(xiàng)目即可。
從本教程項(xiàng)目08起都無法看到文字
考慮到不應(yīng)該只是因?yàn)闊o法看到文字就讓程序運(yùn)行不了,經(jīng)過修改后,如果你的系統(tǒng)不支持DirectX 11.1,則將不會(huì)顯示文字。如果你想要在Windows 7系統(tǒng)上看到項(xiàng)目的文字,則需要:
- 更新Windows 7系統(tǒng)直到安裝了Service Pack 1
- 安裝KB2670838補(bǔ)丁
缺少d3dCompiler_47.dll
Windows 7系統(tǒng)通常情況下是缺少該動(dòng)態(tài)庫的,但如果你裝了Visual Studio 2015/2017,通常會(huì)包含該動(dòng)態(tài)庫供使用。為此,你需要從Visual Studio的安裝路徑中找到運(yùn)行庫對(duì)應(yīng)的版本,如:
Windows SDK 8.1對(duì)應(yīng)C:\Program Files (x86)\Windows Kits\8.1\Redist\D3D,然后再根據(jù)x64還是x86將里面的d3dCompiler_47.dll復(fù)制到你的項(xiàng)目,或者C:\Windows\System32中。
缺少api-ms-win-core-libraryloader-l1-1-0.dll
出現(xiàn)該問題是因?yàn)閷⒉缓线m的d3dCompiler_47.dll拉入到項(xiàng)目或系統(tǒng)環(huán)境中,參照上一條進(jìn)行操作。
DirectX11 With Windows SDK完整目錄
歡迎加入QQ群: 727623616 可以一起探討DX11,以及有什么問題也可以在這里匯報(bào)。
總結(jié)
以上是生活随笔為你收集整理的DirectX11--教程项目无法编译、运行的解决方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Master横扫围棋界 AI智能风暴来袭
- 下一篇: Android点滴积累