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_1和D3D_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系统上看到项目的文字,则需要:
- 更新Windows 7系统直到安装了Service Pack 1
- 安装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,以及有什么问题也可以在这里汇报。
DirectX11--教程项目无法编译、运行的解决方法的更多相关文章
- win7 64位平台编译的程序在XP 32位平台无法运行的解决方法
win7 64位平台编译的程序在XP 32位平台无法运行的解决方法 vs2010的开发环境,制作了一个DLL库.但DLL在XP 32位平台一直无法使用.解决方法如下: 右键项目,属性->配置属性 ...
- 对于C++窗口编译一闪而过的解决方法 (DEV CPP下)
对于C++窗口编译一闪而过的解决方法 首先来看一个简单的程序(编译环境为 DEV C++.): #include <iostream> int main() { std:: ...
- 内容分享-迅为IMX6开发板编译问题及解决方法
[经验分享]IMX6开发板编译问题及解决方法本文转自迅为IMX6开发板售后讨论群,分享给大家~ 物理主机 win10 64 位专业版.虚拟机 VM12 Pro.开发环境采用迅为提供的开发环境: Ubu ...
- 【翻译自mos文章】job 不能自己主动运行的解决方法
job 不能自己主动运行的解决方法 參考原文: Jobs do not execute automatically (Doc ID 309945.1) 适用于: Oracle Server - Ent ...
- $ gulp watch 运行出错解决方法
$ gulp watch 运行出错解决方法 $ gulp watch 如果你出现了如下报错信息: gulp-notify: [Laravel Elixir] Browserify Fail ...
- egret编译速度慢解决方法
egret编译速度慢解决方法 直接用增量更新egret run -a 每次改完代码 保存都会自动编译
- eclipse spring boot 项目出现java.lang.ClassCastException 解决方法
问题 eclipse spring boot 项目出现java.lang.ClassCastException 解决方法: 重新生成项目
- eclipse 新建项目不可选择Java Project 解决方法
解决方法一: 鼠标点击file-new-other,弹出选项框,选中java project,点击next,接下来就是正常创建java protect的流程了,这个虽然也可以解决,但每次新建java项 ...
- ACE编译运行错误解决
使用VS2010编译运行ACE版本号为6.0.1 按照网上步骤添加config.h,在ACE_wrappers/ace目录下 ,新建 config.h 文件加入以下内容: #include " ...
随机推荐
- python之list和tuple
https://www.cnblogs.com/evablogs/p/6691743.html list和tuple区别: 相同:均为有序集合 异同:list可变,tuple一旦初始化则不可变 lis ...
- 网络基础 外网IP,内网IP,虚拟机的网络设置
外网IP,内网IP的关系 在这三类地址中,绝大多数的IP地址都是公有地址,需要向国际互联网信息中心申请注册.但是在IPv4地址协议中预留了3个IP地址段,作为私有地址,供组织机构内部使用. 这三个地址 ...
- 【学习记录】第一章 数据库设计-《SQL Server数据库设计和开发基础篇视频课程》
一.课程笔记 1.1 软件开发周期 (1)需求分析阶段 分析客户的业务和数据处理需求. (2)概要设计阶段 设计数据库的E-R模型图,确认需求信息的正确和完整. /* E-R图:实体-关系图(Ent ...
- C#基础知识之IOC
依赖注入:http://www.cnblogs.com/leoo2sk/archive/2009/06/17/1504693.html IOC:https://jinnianshilongnian.i ...
- Deep Reinforcement Learning for Dialogue Generation 论文阅读
本文来自李纪为博士的论文 Deep Reinforcement Learning for Dialogue Generation. 1,概述 当前在闲聊机器人中的主要技术框架都是seq2seq模型.但 ...
- Python函数默认参数的陷阱
默认参数实际上只有一个值 代码1 def func(l = 1): l += 1 print(l) func() func() func() 代码2 lst = [] def func(a,l = l ...
- 基于令牌桶算法实现的SpringBoot分布式无锁限流插件
本文档不会是最新的,最新的请看Github! 1.简介 基于令牌桶算法和漏桶算法实现的纳秒级分布式无锁限流插件,完美嵌入SpringBoot.SpringCloud应用,支持接口限流.方法限流.系统限 ...
- ios 添加三方字体
字体文件一般后缀名为.ttf 或.odf (备注: 有的字体是收费的,不能用于商业应用.所以还请设计师选择免费的字体好一点,不然会收到律师函哦) 1 加入字体文件 2. info.plist 文件引入 ...
- keras03 Aotuencoder 非监督学习 第一个自编码程序
# keras# Autoencoder 自编码非监督学习# keras的函数Model结构 (非序列化Sequential)# 训练模型# mnist数据集# 聚类 https://www.bili ...
- JAVA之字符串
求字符串长度: 使用.length()方法: 注意:字符串是使用字符串类里的方法,而数组是用数组类里的变量,因此数组是.length. String str="123456789" ...