CxImage702在VS2010上的配置记录

本文档详细记录了如何在Windows 7 64位系统上,使用Visual Studio 2010(32位)编译和配置CxImage702_full项目,包括静态和动态链接的步骤。涉及到解决编译错误、设置附加依赖项以及MFC项目的最小修改等关键操作。

这两天开始接触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或者无法解析函数问题均是通过更改链接输入的附加依赖项解决的(有时候需要切换属性->配置属性-常规->字符集)



  • 编译运行demo

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

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

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


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



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<ximage.h>

在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.youkuaiyun.com/csharp_fei/article/details/24486397

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值