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这些重叠的函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值