游戏开发论坛

 找回密码
 立即注册
搜索
查看: 10386|回复: 5

VC2005下编译DirectX9.0的SDK问题 请高手赐教!!!

[复制链接]

3

主题

3

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2006-2-1 21:41:00 | 显示全部楼层 |阅读模式
VC2005下编译DirectX9.0的SDK问题

VC2005下编译DirectX9.0的SDK问题
编译$(DXSDK)\Samples\C++\DirectShow\BaseClasses下的BaseClasses时出错
Compiling...
dllentry.cpp
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(222) : error C2146: syntax error : missing ';' before identifier 'PVOID64'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(222) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(5940) : error C2146: syntax error : missing ';' before identifier 'Buffer'
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(5940) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(5940) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\DXSDK\include\uuids.h : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss

Winnt.h 222行
typedef void * POINTER_64 PVOID64;

在vc的目录下grep了一把POINTER_64, 发现定义在$(VC)\PlatformSDK\Include的basetsd.h 38行
#define POINTER_64 __ptr64
分明有定义,怪了。
加上/E /P看预处理文件文件,才发现其中奥秘
dllentry.i 6172行
#line 1 "c:\\DXSDK\\include\\basetsd.h"
水落石出!没有包含vc自带的basetsd,include路径设置有问题。在project的property pages中把Additional Include Directories中把 "..\..\..\..\include"去掉就OK了


我也是出现和他一样的问题,可是按他的做了后还是老问题,请高手具体说明怎么导入库,怎么编译的方法,谢谢大家了

[em3] [em3]

7

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
QQ
发表于 2006-2-3 10:05:00 | 显示全部楼层

Re:VC2005下编译DirectX9.0的SDK问题 请高手赐教!!!

是不是你的包含的头文件有冲突,例如包含的最新的microsoft sdk库可能跟默认的vc库冲突,你将库的次序调整一下试试,我以前也碰到过这个问题,但想不起来怎么解决的了,反正不用修改代码的.

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2008-4-26 09:50:00 | 显示全部楼层

Re:VC2005下编译DirectX9.0的SDK问题 请高手赐教!!!

C:\Program Files\Microsoft Visual Studio\VC98\Include
把这个设置在$(VCInstallDir)XXXXXX 的上方

LIB目录不要动。

这样一般没有问题,不过,坏处是:

1 STL无法使用,不过我不用
2 d3d无法设置断点,不过ddraw可以

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2008-4-26 10:22:00 | 显示全部楼层

Re:VC2005下编译DirectX9.0的SDK问题 请高手赐教!!!

还有,编写DShow的话,需要做一个小小的修改:
C:\Program Files\Microsoft Visual Studio\VC98\Include\ocidl.h
4676行,会报告出错,我是这么改的:

/****************************************
* Generated header for interface: IFontEventsDisp
* at Thu Sep 11 10:57:01 1997
* using MIDL 3.03.0110
****************************************/
/* [unique][uuid][object] */

/// instemast

//typedef __RPC_FAR *LPFONTEVENTS;
#define LPFONTEVENTS __RPC_FAR *

/// instemast

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2008-4-26 11:07:00 | 显示全部楼层

Re:VC2005下编译DirectX9.0的SDK问题 请高手赐教!!!

刚才又试了一种方法,不使用VC6.0的头文件,
而是把DXSDK\include\basetsd.h给改名了。VC6.0等会在说。。。

关键在于,6.0和2005中对于POINTER_64的定义为止不同。
6.0是在winnt.h中定义的,然后再包含basetsd.h,
8.0是在basetsd.h中定义的。
DXSDK自带了一个basetsd.h,是VC6.0下的DX开发准备的,里面没有POINTER_64的定义。

这样问题就很明了了。即:

在VC2005下面,不应该包含旧的basetsd.h
在VC6.0下面,需要使用DXSDK自带的basetsd.h,
否则他也不会自带一个了。

看看,把DXSDK下的basetsd.h改名之后,VC6.0编写DX程序就有问题了:
--------------------Configuration: instGraphicsTest - Win32 Debug--------------------
Build : warning : failed to (or don't know how to) build 'c:\dxsdk\include\basetsd.h'

我还没有发现不使用DXSDK下面的basetsd.h会带来什么问题,
不过谨慎起见还是不要这么做鲁莽,至少,在发行游戏的时候,使用DXSDK的basetsd.h编译。

我的方法是,把DXSDK\include\basetsd.h放在一个单独的目录里,
DXSDK\include\vc6\basetsd.h

添加到VC6.0的include路径中,而在vc2005中不添加它~~

0

主题

8

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2012-9-21 13:28:00 | 显示全部楼层

Re:VC2005下编译DirectX9.0的SDK问题 请高手赐教!!!

***是中国的,苍井空是世界的,凤姐是**的
捍卫中国领土完整的权利,坚决抵制日货。大经济战,打垮**。8月15号是抗战胜利纪念日,保钓人士在这一天登上了***,同时也是新抗战的开始,想占中国的地,得先问问中国人答不答应。
上海印刷公司
上海印刷厂
上海贺卡印刷
上海刮刮卡印刷
上海礼品印刷
上海包装盒印刷
上海包装袋印刷
上海礼品盒印刷
上海证书印刷
上海信封印刷
上海请柬印刷
上海礼品袋印刷
上海贺卡印刷
上海宣传单印刷价格
上海宣传册印刷价格
上海宣传单印刷报价
上海名片设计印刷
上海纸盒包装印刷
上海封套印刷厂
上海彩页印刷厂
上海纸箱印刷厂
上海礼品袋制作
上海封面印刷
鼠标垫
鼠标垫价格
鼠标垫厂家
鼠标垫定做
鼠标垫印刷
鼠标垫制作
上海杂志封面
上海包装印刷公司
上海礼品印刷厂
上海宣传品印刷
上海广告印刷
鼠标垫厂
鼠标垫定制
彩色宣传单印刷
美女鼠标垫
鼠标垫厂商
鼠标鼠标垫
游戏鼠标垫
定做鼠标垫
鼠标垫广告
鼠标垫采购
广告鼠标垫
pvc鼠标垫
eva鼠标垫

上海台历定做
上海挂历定做
上海台历印刷
上海台历印刷公司
上海日历印刷
上海挂历封面
上海台历订购
上海台历采购
上海台历印刷
上海台历广告
上海台历价格
上海专版台历
上海台历厂家
上海台历厂商
上海台历制造
上海台历制作
上海台历挂历
上海台历定制
上海挂历印刷
上海台历印刷公司
上海挂历制作
上海挂历定制
上海彩色宣传单印刷
上海鼠标垫印刷公司
鼠标垫印刷公司
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-27 16:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表