VS2005+DirectX 9平台配置出现的问题以及解决方案--Game Scripting Mastery
来源:互联网 发布:淘宝店铺介绍怎么填写 编辑:程序博客网 时间:2024/05/29 17:52
又被清华大学出版社给忽悠了,提供的光盘里写着不提供DirectX sdk下载,给了个链接让我自己去下,我看了下链接的DirectX sdk版本是dxsdk_jun2006.exe,于是就down了一个,这个版本是DirectX 9的版本,哪晓得down了后安装后发现英文书并不是用的这个版本,导致VC6根本和这个版本不兼容,换VC2005吧,DirectX 是没问题了,但由于英文原版的例子是用VC 6.0开发的,导致程序主体的问题很多.无奈啊.不过正好了解下平台移植的痛苦.
还好英文版的书中,还是透漏了用的是哪个SDK,如下图,应该是DirectX 8.1的版本:
好了,先说说我用那破书提供的sdk_jun2006存在的问题:
- 用VC6,和DirectX 9 SDK冲突
- 用VC2005,和作者的源代码冲突
先谈谈如何用VC2005+ DirectX 9 SDK的组合吧.这是我没有发现sdk版本不对时采取的做法.例子用/Chapter 3/Multiple NPCs
- 用VS2005打开Multiple NPCs.dsw,VS会自动将VC6的工程转换为VS2005的.
- 添加需要的库和头文件,要加的有库文件:C:/Program Files/Microsoft DirectX SDK (June 2006)/Lib/x86以及包含文件:C:/Program Files/Microsoft DirectX SDK (June 2006)/Include.加入后,把这两个移到最上.具体方法为:
/*1. 添加编译所需要(依赖)的 lib 文件 [解决方案资源管理器]“项目->属性->配置属性->连接器->输入->附加依赖项”里填写“winsock.lib”,多个 lib 以空格隔开。 (等同于“#pragma comment(lib, "winsock.lib") ”语句) 2. 添加库(Libs)文件目录 方法 1:[解决方案资源管理器]“项目->属性->配置属性->连接器->常规->附加库目录” 方法 2:[菜单]“工具->选项->项目和解决方案->C++ 目录”,选择对应平台,然后添加所需“库文件”目录 3. 添加包含(include)文件目录 方法 1:[解决方案资源管理器]“项目->属性->配置属性->C/C++->常规->附加包含目录” 方法 2:[菜单]“工具->选项->项目和解决方案->C++ 目录”,选择对应平台,然后添加所需“包括文件”目录 */
- 可以编译下看看了,果然出现了错误:fatal error C1083: Cannot open include file: 'iostream.h': No such file or directory e:/iso/gamescript/programs/chapter 3/multiple npcsvs2005/multiple npcs/source/wrappuh.h 30 . VS中改用iostream,所以需要修改为 #include <iostream>
- 再编译,又出现一个错误:错误 13 error C2065: 'iCurrNPCIndex' : undeclared identifier e:/iso/gamescript/programs/chapter 3/multiple npcsvs2005/multiple npcs/source/multi_npc.cpp 656 看代码:
//Multi_NPC.cpp 603行 for ( int iCurrNPCIndex = 0; iCurrNPCIndex < MAX_NPC_COUNT; ++ iCurrNPCIndex ) { .... }//Multi_NPC.cpp 656行 这行iCurrNPCIndex 提示没有定义,可以看出在VS2005里,for循环初始化变量的作用域范围和VC6.0不同 for ( iCurrNPCIndex = 0; iCurrNPCIndex < MAX_NPC_COUNT; ++ iCurrNPCIndex )
- 修改了几个类似的错误,再编译,出现了链接错误:错误 16 fatal error LNK1104: 无法打开文件“../../../../../../program files/microsoft visual studio/vc98/lib/WINMM.LIB” Multiple NPCs "解决方案资源管理器"里有个Libraries目录,里面存放了需要的lib文件,双击WINMM.LIB,提示无法打开文件,看来是这个文件路径错了.用记事本打开Multiple NPCs.vcproj,里面有这么一段可以看出是原来项目的库路径出现了问题. 在"解决方案资源管理器"里把这几个库文件全删掉,然后按照上面"1. 添加编译所需要(依赖)的 lib 文件 "的方法把他们都加进去.
<FilterName="Libraries"><FileRelativePath="../../../../../../DXSDK81/lib/ddraw.lib"></File><FileRelativePath="../../../../../../DXSDK81/lib/dinput8.lib"></File><FileRelativePath="../../../../../../DXSDK81/lib/dsound.lib"></File><FileRelativePath="../../../../../../DXSDK81/lib/dxguid.lib"></File><FileRelativePath="../../../../../../Program Files/Microsoft Visual Studio/VC98/Lib/WINMM.LIB"></File></Filter>
- 具体的图片如下:还需要改的是,_lseek这个bug,详见Direct9+VS2005 读取bmp位图时,_lseek()函数断言报错分析
- ok编译正常了.
使用VC6+DirectX 8就简单很多,因为作者写代码就是用的这套环境.不过还是需要做点变动:
- 去除掉WorkSpace里Libraies里的几个库,把它们加在[Project]->[Settings]->[Link]->[Object/library modules]下的编辑框里.
- [Tools]->[Options]里加入DirectX 8的"包含文件目录"和"库文件目录"我机器上是D:/DXSDK81/INCLUDE和D:/DXSDK81/LIB
- VS2005+DirectX 9平台配置出现的问题以及解决方案--Game Scripting Mastery
- Game Scripting Mastery
- Game Scripting Mastery 笔记
- Git配置过程中出现的问题,以及解决方案
- VS2005对控件重命名时出现问题的解决方案
- iis 经常出现的问题以及解决方案
- 【MYSQL】PHPMYADMIN出现的问题以及解决方案
- Beginning Directx 11 Game Programming环境的配置问题(图文)
- VS2005环境下配置DirectX
- Win32平台下出现中文乱码问题的解决方案
- Armadillo配置以及出现的问题
- VS2005 编译 DirectX SDK BaseClasses 时的问题
- Android重新安装以及出现的一些问题和解决方案
- 编译时常出现缺少库的问题以及解决方案
- volley+listView结合使用时出现的问题以及解决方案
- 安装DirectX SDK时出现Error Code:s1023 的解决方案
- 安装DirectX SDK时出现Error Code:s1023 的解决方案
- 安装DirectX SDK时出现Error Code:s1023 的解决方案
- 还原数组的问题
- 《系统分析与设计》第10章 复习题
- 解决JSP开发Web程序中的中文问题
- 通用XML读取器
- java.lang.NumberFormatException: null
- VS2005+DirectX 9平台配置出现的问题以及解决方案--Game Scripting Mastery
- 1从不知道PYTHON是什么开始?
- Ado中Command的应用
- WEB入侵的全过程(转载)
- 《系统分析与设计》第11章 复习题
- 消息洪水很好用啊..
- 温情主播赵普:从初中学历的保安到央视主持人
- win管理员忘记密码了怎么办
- SimpleDateFormat函数使用的例子