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