beyard

常用链接

统计

最新评论

VC6代码移植VS2008的SDK总结,包括OPENGL和DireX还有Cimage 【总结】

VS2008,VISTA系统

--------------------------------------------------------------------------------------------
【1】 有关OPENGL
--------------------------------------------------------------------------------------------

安装了VS2008后,在目录
C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\gl 下:
GLU.h,    GL.h,    GLAUX.h

在目录
C:\Program Files\Microsoft SDKs\Windows\v6.0A\lib有对应的
OpenGL32.lib

如果需要其他lib库,就必须装SDK了,
我装了nVidiaOPENGL的SDK。

在目录C:\Program Files\NVIDIA Corporation\NVIDIA OpenGL SDK 10\external下有Include文件夹和Lib文件夹
Include:gl\:glut.h, zlib.h, png.h 等几个图像头文件
Lib: glut32.lib, libpng.lib
这样看来,glut.h --> glut32.lib

--------------------------------------------------------

在做项目移植时,如下变化

-------VC6用的库  ------------------------》》》》 ------------- VS2008 --------------------

(1)DirectX8的

dxguid.lib              ----------->         ---- (same)
d3dx8.lib              ----------->         d3dx9.lib
ddraw.lib              ----------->         -----

(2)OPENGL的

opengl32.lib         ----------->          ----
glu32.lib               ----------->          X   (delete)
glaux.lib               ----------->           X
                             ---------->           glut32.lib

(3)第三方自己开发的IMAGE库

zlib.lib                   ----------->        -----
cimage.lib             ----------->        ximage.lib (用的CxImage)
jpeg.lib                 ----------->        ----
png.lib                  ----------->        ----

(4) 多媒体库

winMM.lib             ----------->       ----


----------------------------------------------------------


头文件变化

#include "gl\gl.h"              ---------->    #include "gl.h"
#include "gl\glu.h"            ----------->    X
#include "gl\glaux.h"        ----------->    x
                                       ----------->   #include "glut.h"



以上说明

老版本:
glu.h ---> glu32.lib
glaux.h  --->  glaux.lib

以上这些都用新版本的
glut.h ----> glut32.lib
来替代了
【注意】glu和glut的区别。

保留核心库和头文件(C:\Program Files\Microsoft SDKs\Windows\v6.0A)
gl.h -----> Opengl32.lib




-----------------------------------------------------------------------------------------
【2】 有关 DirectX
---------------------------------------------------------------------------------------------

VC6老版本用的是DX8,移植到VS2008,我换成DX9
Vista系统其实自带了DX10,还有DX9,但是,如果不装开发包SDK的话
只有头文件d3d9.h和d3d10.h,找不到需要的d3d9x.h
装了之后,



VC6 头文件 ------>     VS2008头文件
--------------------------------------------------
d3d8.h      ------------>       d3d9.h
d3dx8.h     ------------>       d3dx9.h

本来以为这样改之后会没有问题,没想到出了大问题。原来DX8和DX9的函数根本不一样,
不仅仅是函数名中的8要改成9,其实函数体也有不同,比如参数个数不同。由于我不熟悉
整个程序,所以根本没法移植下去。
比如
LPDIRECT3D8  ---->  LPDIRECT3D9


头文件地址:
C:\Program Files\Microsoft SDKs\MicroSoft DirectX SDK (NOV 2008)\include

静态链接库地址LIB,需要 ( dxguild.lib,  d3dx9.lib, ddraw.lib )
C:\Program Files\Microsoft SDKs\MicroSoft DirectX SDK (NOV 2008)\Lib\x86



---------------------------------------------------------------------------------------------
【3】CIMAGE的问题。
----------------------------------------------------------------------------------------------


首先,原始代码作者用的CIMAGE的库不知道是从哪里来的。
头文件包含
#include "cimage.h"

我试着用2个办法来解决这个问题。

(1)把它改成 #include "atlimage.h"
谁知道根本不行,很多函数都在ATLIMAGE中找不到,报下列错误:
error C2039: 'ReadFile' : is not a member of 'ATL::CImage'
error C2039: 'Stretch' : is not a member of 'ATL::CImage'
error C2039: 'GetEffWidth' : is not a member of 'ATL::CImage'
error C2039: 'GetDepth' : is not a member of 'ATL::CImage'
error C2039: 'GetRGB' : is not a member of 'ATL::CImage'


(2)用CxImage,这个没办法,试试看
把头文件改成 #include "ximage.h",当然,用这个之前要指定有关lib的位置。
谁知道一样报错找不到函数:
error C2039: 'ReadFile' : is not a member of 'CxImage'
error C2039: 'SaveFile' : is not a member of 'CxImage'
error C2039: 'implementation' : is not a member of 'CxImage'
error C2039: 'GetRawImage' : is not a member of 'CxImage'
error C2661: 'CxImage::Stretch' : no overloaded function takes 9 arguments

对CxImage来说,对应有Load, Save等。
在atlimage时,虽然有SaveFile和Implementation,但是都不是专门用在图像处理的函数。用错了。


总结:很显然,3套图像处理库互不兼容,根本没办法。原来这套代码是2001年左右的,那时候
没有atlimage.h所以,会出现有第3方和MS存在SaveFile这些重叠的函数。





posted on 2009-01-16 22:24 阅读(2174) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理