DirectX11--教程项目无法编译、运行的解决方法

时间:2022-08-25 07:43:15

综述

对于Win10系统的大多数用户来说,可以直接编译本教程对应的项目并运行。但也有部分用户由于某些原因可能会出现无法编译的情况。

DirectX11 With Windows SDK完整目录

欢迎加入QQ群: 727623616 可以一起探讨DX11,以及有什么问题也可以在这里汇报。

与当前项目的Windows SDK版本不一致

对于Visual Studio 2017,你可以点击项目-重定解决方案目标,选择你当前拥有的SDK版本即可。

如果没有上述选项,你需要全选所有项目,并在项目属性-常规中,将Windows SDK版本改为当前你拥有的SDK版本。

DirectX11--教程项目无法编译、运行的解决方法

存在大量的编译错误

此问题仅针对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是没有标准符合性模式的设置的,并且默认为

DirectX11--教程项目无法编译、运行的解决方法

具体可以参考 触发-(标准符合性)

Debug模式下打开程序出现D3D11CreateDevice Failed

这种情况下Release模式应该还是可以运行的,现在查看调试输出窗口应该会有如下信息

DirectX11--教程项目无法编译、运行的解决方法

目前已经确认是你电脑的Win10系统没有安装图形工具。首先点击Win-Windows 管理工具-服务

DirectX11--教程项目无法编译、运行的解决方法

找到服务(本地)中的Windows Update项,如果没有启用,则将它启动。

DirectX11--教程项目无法编译、运行的解决方法

然后右键Win-设置,搜索:管理可选功能,进去后查看现在可选功能是否包含了图形工具,若没有则添加该功能,安装完成后可以看到:

DirectX11--教程项目无法编译、运行的解决方法

现在应该可以进行调试了

提示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++ -预处理器中按下面的方式添加宏:

DirectX11--教程项目无法编译、运行的解决方法

然后重新编译解决方案/项目即可。

从本教程项目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,以及有什么问题也可以在这里汇报。

DirectX11--教程项目无法编译、运行的解决方法的更多相关文章

  1. win7 64位平台编译的程序在XP 32位平台无法运行的解决方法

    win7 64位平台编译的程序在XP 32位平台无法运行的解决方法 vs2010的开发环境,制作了一个DLL库.但DLL在XP 32位平台一直无法使用.解决方法如下: 右键项目,属性->配置属性 ...

  2. 对于C++窗口编译一闪而过的解决方法 (DEV CPP下)

    对于C++窗口编译一闪而过的解决方法 首先来看一个简单的程序(编译环境为 DEV C++.):  #include <iostream>  int main()  {      std:: ...

  3. 内容分享-迅为IMX6开发板编译问题及解决方法

    [经验分享]IMX6开发板编译问题及解决方法本文转自迅为IMX6开发板售后讨论群,分享给大家~ 物理主机 win10 64 位专业版.虚拟机 VM12 Pro.开发环境采用迅为提供的开发环境: Ubu ...

  4. 【翻译自mos文章】job 不能自己主动运行的解决方法

    job 不能自己主动运行的解决方法 參考原文: Jobs do not execute automatically (Doc ID 309945.1) 适用于: Oracle Server - Ent ...

  5. &dollar; gulp watch 运行出错解决方法

    $ gulp watch 运行出错解决方法   $ gulp watch     如果你出现了如下报错信息: gulp-notify: [Laravel Elixir] Browserify Fail ...

  6. egret编译速度慢解决方法

    egret编译速度慢解决方法 直接用增量更新egret run -a 每次改完代码 保存都会自动编译

  7. eclipse spring boot 项目出现java&period;lang&period;ClassCastException 解决方法

    问题 eclipse spring boot 项目出现java.lang.ClassCastException 解决方法: 重新生成项目

  8. eclipse 新建项目不可选择Java Project 解决方法

    解决方法一: 鼠标点击file-new-other,弹出选项框,选中java project,点击next,接下来就是正常创建java protect的流程了,这个虽然也可以解决,但每次新建java项 ...

  9. ACE编译运行错误解决

    使用VS2010编译运行ACE版本号为6.0.1 按照网上步骤添加config.h,在ACE_wrappers/ace目录下 ,新建 config.h 文件加入以下内容: #include &quot ...

随机推荐

  1. boost多边形交集、并集

    交集:http://www.boost.org/doc/libs/1_56_0/libs/geometry/doc/html/geometry/reference/algorithms/interse ...

  2. MariaDB体验2----CSV文件导入

    之前已经安装好MariaDB,现在需要将一份从Sql Server数据库里面导出的CSV文件导入进MariaDB,期间碰到了各种坑,这里记录一下. HeidiSQL的导入CSV文件的地方在“工具”栏, ...

  3. ab 站点压力测试工具

    ab--压力测试工具 前端时间由于需要测试一个网站的高并发的情况,使用到了一个ab测试工具,下面是我自己的体验及参考网上别人的博客所写,希望对大家有所帮助. ab工具简介 ab 全称:apache b ...

  4. &lpar;二叉树 bfs&rpar; leetcode 199&period; Binary Tree Right Side View

    Given a binary tree, imagine yourself standing on the right side of it, return the values of the nod ...

  5. python之并发编程初级篇8

    一.进程理论 1)进程介绍 .什么是进程 一个正在进行的过程,或者说是一个程序的运行过程 其实进程是对正在运行的程序的一种抽象/概括的说法 进程的概念起源操作系统,进程是操作最核心的概念之一 操作系统 ...

  6. 深入理解Java线程池:ThreadPoolExecutor

    线程池介绍 在web开发中,服务器需要接受并处理请求,所以会为一个请求来分配一个线程来进行处理.如果每次请求都新创建一个线程的话实现起来非常简便,但是存在一个问题: 如果并发的请求数量非常多,但每个线 ...

  7. 前台登录和Token信息交互流程

    原来总是对前台登录,怎么利用token有点迷惑,后面仔细的想了一遍,把自己简单的想法记录下来,留作记录,以便后续优化 各路大神有什么看法也可以说,能更完善整个流程. 不说了,暴力的上图: 该图是出自c ...

  8. 【技术分享会】 &commat;第七期 android开发基础

    前言 Android是一种基于Linux的*及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发. Android 软件系列包括操作系统.中间 ...

  9. 洛谷P3826 蔬菜 &lbrack;NOI2017&rsqb; 贪心

    正解:贪心 解题报告: umm,,,其实我还不会 废话我这么菜怎么可能懂QAQ 先占坑,想学习这题很久了呢QAQ

  10. Android APP安装后不在桌面显示图标的应用场景举例和实现方法

    最近在为公司做一款车联网的产品,由于公司本身擅长于汽车解码器的研发,所以该产品的诊断功能的实现除了使用目前市面上车联网产品中大量使用的OBD协议外,还会使用一些专车专用协议去实现一些特殊的诊断功能,如 ...