ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

看完红龙书之后推荐看 Microsoft DirectX SDK (June 2010) 安装目录下面自带的官方sample例子代码

2022-01-08 14:03:29  阅读:226  来源: 互联网

标签:Microsoft June 2010 sample 编译 红龙 DirectX SDK


在读完红龙书《DirectX 9.0 3D游戏开发编程基础》一书后,该书作者推荐去读微软官方的DirectX的例子代码(就保存在安装好后的DirectX SDK的安装目录里面),认为读这些例子是读完此书后提升的绝佳选择(此书电子版pdf第10页记载这一说法)

具体操作:

先下载安装  Microsoft DirectX SDK (June 2010)   

 

然后去找 D:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Samples\C++\Direct3D 目录下面的Direct3D例子(有33个,所有这33个例子编译好的可执行文件在

D:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Samples\C++\Direct3D\Bin 目录下的x86和x64 两个目录里面)


首先从 D:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Samples\C++\Direct3D\EmptyProject   这个例子开始看,

该例子仅需要经过两处修改,就可以在vs2019上编译通过,生成一个蓝色背景的窗口。

 

vs2019编译该例子的方法,先打开vs2019,找到D:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Samples\C++\Direct3D\EmptyProject\EmptyProject_2010.sln 

选中打开, vs2019会提示你要升级平台什么玩意的,不管他,点击确定,项目就打开了。

按F7编译,报错,

(1)说 abs 有什么重载说不清的问题之类,不管,点击报错定位到出错处,把abs修改为fabs

(2)修复abs错误后,还有罗里吧嗦的错误,靠!查找解决方法,发现需要在报错的源文件开头处添加一条编译预处理指令 

#pragma comment(lib, "legacy_stdio_definitions.lib")

(为何要添加此编译预处理指令的原因?参见 https://blog.csdn.net/qq_27474555/article/details/106255215)

我把原因也直接贴这里得了:
      LNK2019 无法解析的外部符号 _vsnwprintf在DxErr.lib(dxerrw.obj)

     报错原因:vs2017默认编译时将许多标准库采用内联方式处理,如果没有可以链接的标准库文件,就要专门添加标准库文件来链接标准库中的函数。
      解决方法:
      1、在报错的源文件添加编译预处理指令
            #pragma comment(lib, "legacy_stdio_definitions.lib")
      2、在工程中配置
      工程->右键属性->链接器->输入->附加依赖项 ,添加“legacy_stdio_definitions.lib”

 

待解决完这两处编译错误后,可以编译生成EmptyProject.exe,一个蓝色的窗口。 EmptyProject.exe可以在项目的debug目录(D:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Samples\C++\Direct3D\EmptyProject\Debug)下找到

 

注意: vs2019要想编译D:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Samples\C++\Direct3D 目录下面的Direct3D例子, 是不能把这些例子程序文件的对应目录拷贝到其他盘符路径下去编译的,

那样会报错,说找不到 D:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Samples\C++\DXUT\Core  下面的.h 和 .cpp 文件,或许还有其他文件也会找不到,因为编译时, vs2019会到 ..\..\DXUT\Core 这样的相对路径下去找 需要链接的文件,所以例子程序最好放在D:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Samples\C++\Direct3D   目录下面,其实是需要维持D:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Samples\C++ 这个目录下面的Direct3D目录和DXUT目录的相对位置不变才行

标签:Microsoft,June,2010,sample,编译,红龙,DirectX,SDK
来源: https://www.cnblogs.com/Thermo/p/15778098.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有