CxImage702在VS2010上的配置记录

这两天开始接触CxImage702,来源于http://nchc.dl.sourceforge.net/project/cximage/7.02/cximage702_full.7z,系统装的是win7,64位的,vs2010却是32位的,不过没什么问题的。

刚开始的尝试运行其中自带的demo和demodll,遇到很多问题,还好的是解决了,其实过程也很简单。

具体的过程如下:

  • 编译cximage702_full

1. 打开cximage702_full目录下CxImageFull_vc10.sln,然后就可以看到解决方案中拥有14个项目:

cximage, cximagecrtdll, cxiamgemfcdll, demo, demodll, jasper, jbig, jpeg, libdcr, libpsd, mng, png, tiff, zlib

其中cximagecrtdll, cxiamgemfcdll是用以支持动态链接库的方式加入所需的项目,如果不需要动态链接,则不需要编译运行;

demo和demodll是示例的两个项目,其实是一个项目的不同的外部链接输入配置,前者使用静态链接,后者使用动态链接。

2. 选择静态链接时,编译除了cximagecrtdll, cxiamgemfcdll, demo, demodll的10个项目(选择项目右键生成或重新生成,或选择整个解决方案生成解决方案)

3. 选择动态链接时,继续在编译了上述10个项目的基础上,编译 cximagecrtdllcxiamgemfcdll(可能会遇到问题),动态链接和静态链接项目所需的库除了头文件外是完全不一样的,下面细说。

4. cxiamgemfcdll可能会遇到无法打开lib库的问题,也就是找不到,我配置的时候就出问题了,在成功编译了上面10个项目后,在cximage702_full/Debug目录下生成众多的lib文件,我修改了cxiamgemfcdll,属性->配置属性->链接->输入->附加依赖项,将各个lib依赖项修改对应到cximage702_full/Debug中的lib。值得一提的是,我遇到的无法打开lib或者无法解析函数问题均是通过更改链接输入的附加依赖项解决的(有时候需要切换属性->配置属性-常规->字符集)

CxImage702在VS2010上的配置记录_第1张图片


  • 编译运行demo

5. 然后尝试运行demo(先设置为启动项目)

a. 此项目是静态链接,需要的是cimage目录下的众多头文件和众多lib库,前者在属性->配置属性->C\C++->附加包含目录或属性->配置属性->包含目录中添加头文件所在的目录;后者在属性->配置属性->链接器->输入->附加依赖项中添加lib各个文件项目。注意的是cpp文件是不需要的,可以将cimage目录下的众多头文件拷到项目的某个目录中

b. 编译运行时出现了两个问题,一个是lib的问题,将lib的路径同样按照上面的方式重新配置了以后(注意相对路径是针对某个项目的)

CxImage702在VS2010上的配置记录_第2张图片

c. 接着出现了无法打开exe的问题,没办法,将属性->配置属性->常规中的输出目录和目标文件名给改了,我的是改成了$(SolutionDir)\bin\和demod,也就是和链接器->常规中的输出文件弄成一致的,开始并不一致,这个很奇怪。



CxImage702在VS2010上的配置记录_第3张图片

6. 最后成功运行。

  • 编译运行demodll

7. 运行demodll时

a. 此项目使用的动态链接,只需要cimage目录下的众多头文件,cximagecrtd.lib和cximagecrtd.dll(生成自项目cximagecrtdll)cximaged.lib和cximaged.dll(生成自项目cximagemfcdll),头文件与lib文件的配置方式也与上面demo的一致。这次lib的依赖路径没有修改,原来的是一致的,当然的不一致的也需要修改。

b. 同样出现了无法打开exe文件的问题,同上面的方式,将输出目录和目标文件名给改了,我的是改成了$(SolutionDir)\bin\和demoddll

8. 最后demodll也运行成功。


  • 新建vs2010MFC项目所需要的最小修改和相关文件的配置

1. 我建立了MFC多文档项目CxImageTest

2. 开始是静态链接的方式,CxImageTest源文件目录中建立文件夹CxImage\include和CxImage\lib将cimage中的头文件复制到include目录中,将生成的10个lib加入到lib目录中,按照上面demo同样的方式增加相应的头文件依赖和lib依赖

3. 在CCxImageTestView.cpp中添加代码

#include

在CCxImageTestView::OnDraw(CDC* pDC)中添加代码:

	CxImage image;
	image.Load(_T("C:\\Users\\Administrator\\Desktop\\logo913.png"),CXIMAGE_FORMAT_PNG);
	image.Draw(pDC->GetSafeHdc(),0,0);

当然图片的路径和格式按照需要随时更改了。
4. 项目成功编译,没有其他任何额外的配置

5. 接着是动态链接的方式,CxImageTest源文件目录中建立文件夹CxImage\include和CxImage\lib,将cimage中的头文件复制到include目录中,将cximagemfcdll生成的cximaged.lib(或cximagecrtdll生成的cximagecrtd.lib)加入到lib目录中,将cximagemfcdll生成的cximaged.dllcximagecrtdll生成的cximagecrtd.dll复制到CxImageTest源文件目录中按照上面demo同样的方式增加相应的头文件依赖和lib依赖(在静态的基础上直接替换即可)
6. 源代码与上面的一致。

7. 项目成功编译运行,也没有其他任何额外的配置,crt和mfc的dll变换只是改了lib和dll,没改其他的。

8. 一个小的结论是CxImage的使用只是在原项目的基础上增加了头文件和lib,以及动态链接时的dll的依赖配置,没有对项目的其他配置造成影响,但是如果项目中已更改其他配置,比如将字符集改为使用多字符字符集,而不是原来的使用unicode字符集,编译运行的时候反而出错了,具体原因不甚明了,就不说继续了。

文章来源:http://blog.csdn.net/csharp_fei/article/details/24486397

你可能感兴趣的:(CxImage702,vs2010,win7,mfc,MFC,CxImage)