最近需要用D3D开发程序,平台是VC6.0,比较古老了,使用中遇到各种问题,将其中一些困扰时间较长的问题列出,供同样遇到此问题人做参考。
1、VC6环境下,使用D3D设备,需要包含#include<dinput.h> 头文件,由于在VC6的include中已有该头文件,而该文件中的DX版本较低,因此会出现LPDIRECTINPUTDEVICE8未定义等错误,解决办法:
(1)将dinput.h拷贝到当前工程目录;
(2)在tool->options中的Directories选项卡中的include file列表中将D3D的include目录放在VC6平台的include目录之前。
2、VC6环境下,编译时出现D3dxInput.obj: error LNK2001: unresolved external symbol _IID_IDirectInput8A d错误,也是由于vc6.0中的lib库中包含dxguid.lib,编译时连接到vc6.0自带的dxguid.lib,而不是D3D中的dxguid.lib文件。
解决办法:在tool->options中的Directories选项卡中的Library file列表中将D3D的lib目录放在VC6平台的lib目录之前。
编译链接使用了正确的lib文件,但又会出现如下错误(debug版本出错,release版本没有):
dxguid.lib(dxguid.obj) : fatal errorLNK1103: debugging information corrupt; recompile module;
网上查了很久,是没有调式信息导致,Project ->Project Setting中的Link选项卡下的 Genereatedebug info 选项取消前面的“√”,在编译就能顺利通过了