none
VS2008自带的C++的D3D Sample无法编译。 RRS feed

  • 问题

  • VS2008自带的Sample中,\C++\Attributes\Advanced\Direct3D目录中的Sample无法成功编译,总报告无法找到“d3d.h”。

    在网上查询后,知道在DirectX8.0之后,应使用“d3d8.h、d3d9.h、d3d10.h”来替换原来的"d3d.h",由于我用的是WindowsXP系统,只能支持DirectX9.0,所以将“d3d.h”改为“d3d9.h”,但是,编译后报告有390多个错误。

    已经确认在我的系统中C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include目录下有d3d9.h和d3d10.h两个文件。

    我没有另外安装DirectX SDK,是这个原因导致的吗?

    该Sample的Readme文件里并没有要求必需安装DirectX SDK。

    既然该Sample是在VS2008里发行的,因该在VS2008完全安装的情况下,可以成功编译和运行的。

    我哪里出错了?如何解决呀?

     

     

    2010年4月8日 10:21

全部回复

  • 本来看sample是为了入门容易些,没想到连sample都运行不了,真郁闷呀。。。。。

    但是我不想放弃,想借此问题而深入学习一下,恳请大家给些建议吧!!

    谢谢。

     

    2010年4月9日 5:49
  • >我没有另外安装DirectX SDK,是这个原因导致的吗?

    是,参考Windows SDK的说明。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    • 已建议为答案 wuzi1986829 2011年7月19日 14:08
    2010年4月9日 19:16
    版主
  • >我没有另外安装DirectX SDK,是这个原因导致的吗?

    是,参考Windows SDK的说明。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP

    谢谢你的解答。

    还想问一下,既然我已经完全安装了VS2008,而且系统里也已经有windows sdk的目录了,我还需要另外下载并安装windows sdk吗?

    另,我先安装DirectX SDK试一下。

     

    再次感谢!

    2010年4月10日 1:06
  • 不需要,除非你需要调用Windows 7/2008 R2的新API

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2010年4月10日 3:26
    版主
  • 你需要安装DirectX 9.0的SDK,因为Windows SDK里是没有d3d.h的(这是一个老版本的DirectX头文件了),或者你可以下载一个DDK(驱动开发包),这个里面基本上所有的头文件都会有。
    0xBAADF00D
    2010年4月10日 12:39
    版主
  • 我没有另行下载windows SDK,因为VS2008里已经集成了V6.0A版本,对于我来说够用了。

    我已经安装了DirectX SDK(2009 March),但是问题依旧。

    奇怪的是,DirectX SDK里带的sample是可以正常编译的。

    已经确认VS2008里的各种包含路径设置是正确的。

     

    还有其他产生问题的可能性吗?

    谢谢各位版主的解答!!!

     

    • 已编辑 VR King 2010年4月11日 9:11
    2010年4月11日 1:24
  • 把你的Visual C++头文件包含顺序和错误信息贴出来看看

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2010年4月11日 3:32
    版主
  • 这是“d3d.h”时编译报的错误:

    ------ 已启动生成: 项目: Direct3D, 配置: Debug Win32 ------

    正在编译...

    stdafx.cpp

    正在编译...

    D3DAtl.cpp

    c:\c++\attributes\advanced\direct3d\D3DWnd.h(15) : fatal error C1083: 无法打开包括文件:“d3d.h”: No such file or directory

    D3DWnd.cpp

    c:\c++\attributes\advanced\direct3d\d3dwnd.h(15) : fatal error C1083: 无法打开包括文件:“d3d.h”: No such file or directory

    Direct3D.cpp

    c:\c++\attributes\advanced\direct3d\D3DWnd.h(15) : fatal error C1083: 无法打开包括文件:“d3d.h”: No such file or directory

    正在生成代码...

    生成日志保存在“file://c:\C++\Attributes\Advanced\Direct3D\Debug\BuildLog.htm”

    Direct3D - 3 个错误,0 个警告

    ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

     

    2010年4月11日 8:45
  • 以下是“d3d9.h”时报的错误:

     

    ------ 已启动生成: 项目: Direct3D, 配置: Debug Win32 ------

    正在编译...

    D3DAtl.cpp

    c:\c++\attributes\advanced\direct3d\D3DWnd.h(79) : error C2146: 语法错误 : 缺少“;”(在标识符“d3dHWDeviceDesc”的前面)

    。。。。。。

    c:\c++\attributes\advanced\direct3d\D3DWnd.h(255) : error C2065: “dvSin”: 未声明的标识符
    c:\c++\attributes\advanced\direct3d\D3DWnd.h(255) : error C2065: “dAngleOfRotation”: 未声明的标识符
    c:\c++\attributes\advanced\direct3d\D3DWnd.h(255) : fatal error C1003: 错误计数超过 100;正在停止编译
    正在生成代码...
    生成日志保存在“file://c:\C++\Attributes\Advanced\Direct3D\Debug\BuildLog.htm”
    Direct3D - 390 个错误,0 个警告
    ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

    2010年4月11日 8:48
  • 另外,如何上传图片呀?

    Visual C++头文件包含顺序,需要上传屏幕截图。

    我想,Include和Lib文件的包含顺序应该没有问题了,因为Direct SDK中其他的Sample都能够编译通过。

     

    2010年4月11日 8:53
  • 在MSDN里搜来搜去,发现这个sample是很古老了,VS .net、VS2005的sample里都有他,在VS2008的Sample说明里多了如下这句话:

    “Some of the samples, such as this one, have not been modified to reflect the changes in the Visual C++ wizards, libraries, and compiler, but still demonstrate how to complete your desired task.”

     看来源代码必需进行一定的调整,才能适应DirectX的版本变化。这可超出我目前的水平了。

    2010年4月11日 9:30