none
使用VS2012配合WIN7系统编译<directx9.0 3d游戏开发编程基础>书中第一个范例出错 RRS feed

  • 问题

  • 使用VS2012旗舰版,装了2010JUNE的DirectX SDK,系统是win7;

    已新建win32工程,并将项目属性中,工程的include添加了DirectX的include,lib添加了X86lib;

    并将工程项目属性中的:链接器-〉输入-〉附加依赖项 中添加了d3d9.lib,d3dx9.lib winmm.lib;

    并将工程项目属性中的:常规-〉字符集  改为多字节字符集。

    这样编译,出现了大量重复性的错误:

    1>d:\microsoft directx sdk\include\d3d9.h(45): error C2065: “HMONITOR”: 未声明的标识符
    1>d:\microsoft directx sdk\include\d3d9.h(45): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
    1>d:\microsoft directx sdk\include\d3d9.h(57): error C2065: “IID_IDirect3D9”: 未声明的标识符
    1>d:\microsoft directx sdk\include\d3d9.h(57): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
    1>d:\microsoft directx sdk\include\d3d9.h(57): error C2078: 初始值设定项太多
    1>d:\microsoft directx sdk\include\d3d9.h(61): error C2065: “IID_IDirect3DDevice9”: 未声明的标识符
    1>d:\microsoft directx sdk\include\d3d9.h(61): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
    1>d:\microsoft directx sdk\include\d3d9.h(61): error C2374: “DEFINE_GUID”: 重定义;多次初始化
    1>          d:\microsoft directx sdk\include\d3d9.h(57) : 参见“DEFINE_GUID”的声明
    1>d:\microsoft directx sdk\include\d3d9.h(61): error C2078: 初始值设定项太多

    ...........

    1>d:\microsoft directx sdk\include\d3d9.h(188): error C2144: 语法错误:“int”的前面应有“;”
    1>d:\microsoft directx sdk\include\d3d9.h(188): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
    1>d:\microsoft directx sdk\include\d3d9.h(188): error C2086: “int interface”: 重定义
    1>          d:\microsoft directx sdk\include\d3d9.h(175) : 参见“interface”的声明
    1>d:\microsoft directx sdk\include\d3d9.h(189): error C2144: 语法错误:“int”的前面应有“;”
    1>d:\microsoft directx sdk\include\d3d9.h(189): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
    1>d:\microsoft directx sdk\include\d3d9.h(189): error C2086: “int interface”: 重定义
    1>          d:\microsoft directx sdk\include\d3d9.h(175) : 参见“interface”的声明
    1>d:\microsoft directx sdk\include\d3d9.h(191): error C2144: 语法错误:“int”的前面应有“;”
    1>d:\microsoft directx sdk\include\d3d9.h(191): fatal error C1003: 错误计数超过 100;正在停止编译

    我的VS2012装在C盘program files(X86)目录下,directX SDK装在d盘根目录下,

    想请问各位,为何这个简单的范例程序编译中会产生如此多的错误,而且错误来源全都是d3d9.h?

    2013年10月7日 12:27

答案

  • 你好,

    如果你确定你的Microsoft DirectX SDK\Lib\ 和 \Microsoft DirectX SDK \Include\ 都添加好了,你可以在

    预处理定义中进行如下定义再试试看, 因为d3d9.h 将会包含  # include <windows.h>

    这个博客供你参考

    http://gregs-blog.com/2008。/02/20/directx-9-c-graphics-tutorial-1-getting-started/

    希望对你有帮助!

    Best Wishes,

    May


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 YixiongRen 2013年10月10日 9:22
    2013年10月8日 8:47