vs2017community进行DirectX开发_问题小节

2023-11-02

一.下载并安装vs及DirectX

1.vs版本:vs2017community  免费的,百度就有

2.我下载的DirectX版本:DXSDK_Jun10

链接https://pan.baidu.com/s/1w7np5N-E6QYqJXIr0DKhOg

[安装过程中的问题] (更详细的过程可参考 https://blog.csdn.net/zhangkaihang/article/details/8652421

安装SDK时,可能会在安装最后出现:

安装问题

错误信息为:Error Code:S1023
出现 S1023 错误的原因是 VC++运行库不能成功安装,而 VC++运行库不能安装的原因是系统中已经安装了VC++运行库,并且版本等于或高于要安装的版本。
我们只需要把系统中已经安装的比SDK中VC++运行库版本高的卸载掉即可:
卸载程序:(只要下面的两个程序版本高于或者等于10.0.30319就将其卸载掉,要注意:不要错误的卸载掉2012或者 2008)

卸载配置

然后重新安装即可解决。


二.新建vs项目、配置DirectX

1.新建vs项目

(1)文件->新建->项目->Visual C++ -> Windows桌面 ->Windows桌面向导   填写名称位置  确定

(2)应用程序类型:控制台应用程序(.exe)  选空项目  确定

2.配置DirectX

(参考自 Mr_Lsz大大的 https://blog.csdn.net/lishuzhai/article/details/54135799

(1)右键工程名->属性

(i)打开属性后,在“配置属性->VC++目录”下的“包含目录”添加你的DirectX安装目录\include

如:我的安装路径是:D:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include


(ii)“库目录”添加的你的DirectX安装目录的\Lib\x86:
如:我的安装路径是:D:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x86

(要注意用“;”隔开前后目录,如果用上述 编辑 方式添加就不用了)

操作与上述类似就不加图了

(iii)“配置属性->链接器->输入”里的“附加依赖项”

将下列库文件粘贴到原有文件的后面:
d3d9.lib
d3dx10d.lib
d3dx9d.lib
dxerr.lib
dxguid.lib
winmm.lib
comctl32.lib


点确定即可完成配置


(2)检验一下是否配置完成:

在 DirectX 安装目录下的 Samples\C++\Direct3D\Tutorials\Tut04_Lights 目录下,打开 .sln 文件。
用 VS打开时,如果提示要进行升级,确认升级即可。(我的工程是升级后的,跟刚开始看到的工程有差别)

检验配置

升级后运行,如果看到此图则证明配置正确:

运行效果


3.属性表的配置

为什么要配置属性表呢?我们可以思考下,如果我们新建一个项目过后,就需要配置一遍DX和Effect环境(也就是重复上面的操作),岂不是很麻烦。
如果我们我们配置好一个属性表,每次新建一个项目过后,只需要导入这个属性表就行了。而不用进行上面很是啰嗦的操作。这样就很方便咯。

(1)新建项目并新建一个属性表

首先新建一个项目,打开这个项目的属性管理器(“视图->其他窗口->属性管理器”)d点击Debug|Win32右键新建一个属性表:(我们将其命名为DXProperty)

新建属性表

双击打开此属性表,会弹出一个界面。我们只需要按照上面的操作(DX的基本配置)在此处重新操作一遍即可(完全一样的配置操作)。
即可得到一个配置好的属性表。(切换为原来的视图:视图->解决方案资源管理器)

导入属性表

操作

(2)导入属性表

那么往后你新建完一个新的项目后,只需要打开项目的属性管理器,点击Debug|Win32 文件夹,右键“添加现有属性表”。然后找到你配置好的属性表路径,直接导入
即可。不需要任何多余的操作

导入

三.编写代码时遇到的问题

1.(使用MessageBox时)const.char 类型形参与LPWSTR 类型的实参不兼容

(参考地址 https://jingyan.baidu.com/article/7c6fb428629c3a80652c907e.html

我们在用VS2012,VS2013编译自己或者网上的源代码时会提示如下错误“LPWSTR 类型的实参与const.char 类型形参不兼容”,如果我们在VC6.0上运行是不会提示这个错误的。主要原因是VC6默认使用字符ANSII编码方而VS2010、VS2012、Visual Studio 2013默认使用UNICODE编码方式。它们对一些字符所占内存空间的位数不同,为了向下兼容,可以在VS中通过修改一项设置来完成。(适用我的vs2017community)

(1)右击项目文件,选择属性

(2)选择“配置属性->常规”里的“字符集”,更改为“使用多字节字符集”


(3)单击确定即可,再次编译,此类错误就不会出现了

2.新建cpp编写DirectX程序后,生成解决方案时报错

错误    LNK2019    无法解析的外部符号 _main,该符号在函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中被引用  
错误    LNK1120    1 个无法解析的外部命令

解决:

(1)右键项目->属性

(2)“配置属性->链接器->系统”里的“子系统”选择 窗口

(3)再次生成解决方案就没问题了


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vs2017community进行DirectX开发_问题小节 的相关文章

  • 初识vue3

    对vue3的理解 2020年9月发布的正式版 vue3支持大多数的Vue2的特性 Vue中设计了一套强大的组合APi代替了Vue2中的option API 复用性更强了 更好的支持TS 最主要 Vue3中使用了Proxy配合Reflect代

随机推荐

  • notepad++中配置python IDE

    操作系统是windows7 notepad 版本是5 9 6 2的安装版 python版本是2 7 2 windows7下的python安装配置在http blog csdn net gabriel1026 article details
  • 《算法和数据结构》数学基础总结

    前言 算法是什么 数学是什么 算法中的数学又是什么 这篇文章 让我来为大家介绍下法中的数学基础 数学可以说是算法的基石 所谓万丈高楼平地起 如若根基不稳 那么再高的楼 也只是豆腐渣工程 随时都有塌陷的可能 所以数学之于算法 可谓 非常重要
  • vmware 虚拟机开机自启动脚本

    1 建立一个txt文件 D VMware VMware Workstation vmrun exe T ws start I Documents Virtual Machines centos centos vmx nogui 注意 如果路
  • Python学习之爬取网页图片(单张)

    import requests import os os 库是Python标准库 包含几百个函数 常用的有路径操作 进程管理 环境参数等 root D pictures url input 请输入图片链接 让用户输入图片链接 path ro
  • 【JVM】JVM内存模型(详细)

    目录 一 JVM概述 1 jvm简介 2 jvm作用 3 jvm的内存模型 二 类加载器 1 类加载器的作用 2 加载器的类型 3 双亲委派机制的运行过程 4 双亲委派机制优缺点 5 为什么要破坏双亲委派机制 6 破坏双亲委派机制的方式 三
  • 函数调用堆栈的过程

    函数在进行调用时会产生开栈和清栈的操作 那么就来介绍一下函数调用堆栈的过程吧 首先 利用一个小例子来研究这个过程 include
  • Android禁止view上下滑动,Android RecyclerView禁止滑动

    在开发时 数组返回数目很少 需求要求不能左右滑动 下面是一种解决方案 1 RecyclerView 为垂直状态 VERTICAL 下 LinearLayoutManager layoutManager new LinearLayoutMan
  • 1929:【04NOIP普及组】火星人

    题干 这道题有好多废话 不过和全排列非常像 全排列题目 所以这道题数字的大小顺序与全排列的默认顺序一模一样 全排列的代码 在这里 本题就是一次次地调用全排列 不愿意麻烦的 就是我 可以用STL 非常方便 代码 100分 include
  • Stream:findFirst()高效简洁遍历集合中的一个元素

    业务开发中会运用到很多的List
  • sonarqube项目按权限分配

    一 创建用户 进入sornarqube的配置中心 选择权限菜单下的用户菜单 然后点击Create User按钮 只要输入登录名 用户名与密码保存后就可以创建一个新用户 二 创建组 选择权限下的群组菜单进入用户组管理页面 点击Create G
  • 时序数据交叉验证方法与python实现

    文章目录 传统N折交叉验证方法 时序数据交叉验证方法 方法1 窗口拆分 方法2 带间隔的窗口拆分 方法3 拓展窗口切分 时序交叉验证python复现 传统N折交叉验证方法 传统的N折交叉验证示意图如下图所示 时序数据交叉验证方法 由于时间序
  • 谨慎对待Go语言中对interface的nil判断

    谨慎对待Go语言中对interface的nil判断 在进行Go语言编程中 我们会看见诸如if err nil 或者if err nil 之类的判断 这跟go语言的错误处理哲学 计划失败而非成功 及早失败 有关 大多数情况下 我们对一个err
  • StringRedisTemplate运行NullPointerException的完全解决

    SpringBoot在使用Redis时出现StringRedisTemplate运行NullPointerException的完全解决 RedisTemplate运行NullPointerException的完全解决 三种解决方法 第一种
  • STM之SD卡

    SD卡基本函数 SPI InitTypeDef结构体 SPI 初始化结构体 1 SD Lowlevel Init 该函数初始化SPI相关外围时钟 配置GPIO引脚 调用SPI Init 初始化SPI InitStructre结构体 gt S
  • Linux下如何安装Anaconda、修改环境变量以及管理环境

    Linux下AI环境的搭建 Anaconda篇 1 第一步 安装anaconda 2 第二步 更改 调整系统环境PATH 3 第三步 创建适当的虚拟 python pip 工作区 3 第四步 如何使用conda来管理不同环境 1 第一步 安
  • java获取客户端操作系统_根据User-Agent,获得客户端浏览器和操作系统的信息

    碰到取客户端浏览器和操作系统信息的问题 网上找了很久 大多都是在页面中嵌入JS实现的 无法满足我的要求 所以 就自己写了个方法 可以在servlet中取到 我是根据每个浏览器User Agent的特征 来判断的 在windows xp中已测
  • 汇编实现排序——希尔排序

    希尔排序是把记录按下标的一定增量分组 对每组使用直接插入排序算法排序 随着增量逐渐减少 每组包含的关键词越来越多 当增量减至1时 整个文件恰被分成一组 算法便终止 以下是汇编实现的代码 S0 SEGMENT STACK DW 20 DUP
  • RabbitMQ学习(四)——高级特性

    RabbitMQ高级特性 1 1 消息的可靠投递 1 1 1 消息发送端 在使用RabbitMQ的时候 作为消息发送方式希望杜绝任何消息丢失或者投递失败的场景 RabbitMQ为我们提供了两种方式用来控制消息的投递可靠性模式 confirm
  • IDEA断点调试技巧,多张动图包教包会。

    文章目录 一 怎么开启断点调试 二 调试界面咋那么多按钮 1 返回断点位置 2 步过 3 步入 4 5 强制步入 步出 6 回退断点 7 断点跳到光标处 8 表达式计算 9 恢复程序 10 停止程序 11 查看所有断点 12 禁用断点 13
  • vs2017community进行DirectX开发_问题小节

    一 下载并安装vs及DirectX 1 vs版本 vs2017community 免费的 百度就有 2 我下载的DirectX版本 DXSDK Jun10 链接https pan baidu com s 1w7np5N E6QYqJXIr0