CxImage开源库在VS2013的编译和使用

CxImage开源库在VS2013的编译和使用

2017年12月19日 09:38:47 珠雨妮儿 阅读数:1023

https://blog.csdn.net/zhuyunier/article/details/78839228

 

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhuyunier/article/details/78839228

一、cximage600_full在VS2013编译和使用

 

1、编译
        (1)下载后解压缩,直接打开根目录下的 CxImgLib.dsw文件。版本转换完成之后,在编译之前先将每个工程属性的字符集由原先的使用Unicode字符集改为使用多字节字符集,生成解决方案。


注:编译报错及解决方法

1)字符问题解决方法:编译之前先将每个工程属性的字符集由原先的使用Unicode字符集改为使用多字节字符集。

 

2)编译报错:Building an MFC project for a non-Unicode character set is deprecated. You must change the project property to Unicode or download an additional library。

     解决方法:下载 Multibyte MFC Library for Visual Studio 2013并安装  http://www.microsoft.com/zh-cn/download/details.aspx?id=40770

 

3)编译报错:错误 6 error LNK1104: 无法打开文件“.\Debug\png.lib”。
     解决方法:在编译cximagemfcdll之前,先修改其属性,链接器->输入->附加依赖项,将$(OutDir)png.lib等改为../../Debug/png.lib(../../Release/png.lib)。

 

4)编译报错:MFC does not support WINVER less than 0x0501.  Please change the definition of WINVER in your project properties or precompiled header.
     解决方法:cximage600_full\CxImage\CxImageDLL 和 cximage600_full\demo路径下的两个StdAfx.h 中的#define WINVER 0x0400改成#define WINVER 0x0501。

 

2、准备工作

        CxImage的使用方式是动态库的,所以需要三种东西 include、lib、dll。
        (1)include :cximage600_full\CxImage  路径下的头文件。
        (2)lib:cximage600_full\CxImage\CxImageDLL 路径下,根据编译时选择的“解决方案配置”(就是debug、release之类)。会有对应的文件夹。我选择的是debug。所以会有一个debug文件夹,里面就有需要的lib文件。
        (3)dll:cximage600_full\bin 路径下会有生成的dll。有两个dll。一个文件名里有 crt,另一个没有,不带crt的动态库就是给mfc用的。

 

3、测试

        (1) 创建一个win32控制台应用程序做测试,创建项目后,先修改项目字符集,配置include和lib。

        (2) 把1.jpg图片和cximage600_full\bin 目录下的dll文件放到测试的exe文件路径内。
        (3) 编译执行后,就将1.jpg另存为2.png了。

 

 
  1. #include "stdafx.h"

  2. #include<iostream>

  3. #include"ximage.h"

  4. #pragma comment(lib,"cximagecrtd.lib")

  5.  
  6. int main(){

  7. CxImage image;

  8. image.Load("1.jpg");

  9. image.Save("2.png", CXIMAGE_FORMAT_PNG);

  10. return 0;

  11. }

 

注:编译报错及解决方法

         (1) 编译报错:error C2664: “bool CxImage::Load(const TCHAR *,DWORD)”: 无法将参数 1 从“const char [6]”转换为“const TCHAR *”。
             解决方法:将字符集由使用Unicode字符集改为使用多字节字符集。

         (2) 编译报错: error C4996: '_wfopen': This function or variable may be unsafe. Consider using _wfopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
              解决方法:在项目属性C/C++->预处理器->预处理器定义中添加_CRT_SECURE_NO_WARNINGS

 

二、cximage702_full在VS2013编译和使用

 

1、编译

        (1)从http://sourceforge.net/projects/cximage/下载最新的CxImage 702源码;解压缩后,用vs2013打开CxImageFull_vc10.sln工程。
        (2) 在编译之前先将每个工程属性的字符集由原先的使用Unicode字符集改为使用多字节字符集。
        (3) 首先编译jasper、jbig、jpeg、libdcr、libpsd、mng、png、tiff、zlib这9个库,然后编译cximage,cximagecrtdll。
        (4)再接着编译cximagemfcdll,在编译cximagemfcdll之前,在编译cximagemfcdll之前,先修改其属性,链接器->输入->附加依赖项,将$(OutDir)png.lib等改为../../Debug/png.lib。
        (5) 最后编译demo、demodll;全部编译完后即可生成相应的静态库和动态库。

 

2、具体说明

       直接打开CxImageFull_vc10.sln,打开后发现共有该解决方案下共有14个项目,
       (1)cximage、jasper、jbig、jpeg、libdcr、libpsd、mng、png、tiff、zlib这10个项目是生成静态库文件的,对应的静态库文件分别是cximage.lib,jasper.lib,jbig.lib,jpeg.lib,libdcr.lib, libpsd.lib,mng.lib,png.lib,tiff.lib,zlib.lib;
       (2)CxImageCrtDll和cximagemfcdll这两个项目是生成动态库的;
       (3)另外有demo和demodll这两个项目是演示用的,生成demo.exe和demodll.exe两个应用程序(在D:\\cximage702_full\bin目录下),两者之间的差别可能是一个使用的是静态库(demo),一个使用的是动态库(demodll)。

       (4)整个解决方案项目之间的依赖关系是:

  • 10个静态库文件不依赖任何其他项目;
  • CxImageCrtDll和cximagemfcdll这两个项目依赖于除cximage外的其它静态库项目;
  • demo依赖于10个静态库项目;
  • demodll不依赖任何项目,但在链接器->输入->附加依赖项的时候发现,该项目依赖于10个静态库项目生成的对应lib文件,这些文件必须在此之前生成

         (5)静态库文件的生成:
          根据依赖关系,在CxImageCrtDll,cximagemfcdll,demo任意一个项目上上右键生成,都会在相应的D:\\cximage702_full\Debug目录或者D:\\cximage702_full\Release\目录下得到静态库文件
         (6)动态库文件的生成

         生成文件在解决方案所在目录的bin目录下,Debug模式下:cximagecrtd.dll和cximaged.dll,同时注意Debug目录下分别有cximagecrtd.lib和cximaged.lib生成,这两个库文件在动态调用dll的时候有用。

 

3、准备工作

        (1)建立D:\cximage702\cximage_build\Multi-byte文件夹,将编译好的CxImage文件夹下的所有头文件拷贝到include文件夹下。
        (2)静态库的准备: 将debug模式下生成的静态库文件Debug目录下。
        (3)动态库的准备:将bin目录下的cximaged.dll和cximagecrtd.dll提取出来备用。

 

4、测试

       (1) 创建一个win32控制台应用程序做测试,创建项目后,先修改项目字符集,配置include和lib, 在项目属性C/C++->预处理器->预处理器定义中添加_CRT_SECURE_NO_WARNINGS。
       (2) 把1.jpg图片和cximaged.dll和cximagecrtd.dll文件放到测试的exe文件路径内。
       (3)测试程序,编译成功。

 

 
  1. //stdafx.h

  2. #pragma once

  3.  
  4. #include "targetver.h"

  5.  
  6. #include <stdio.h>

  7. #include <tchar.h>

  8. // TODO: 在此处引用程序需要的其他头文件

  9. #include "./cximage_build/include/ximage.h"

  10.  
  11. #pragma comment(lib, "wininet.lib")

  12. #pragma comment(lib, "./cximage_build/Debug/cximage.lib")

  13. //#pragma comment(lib, "./cximage_build/Debug/jasper.lib")

  14. //#pragma comment(lib, "./cximage_build/Debug/jbig.lib")

  15. //#pragma comment(lib, "./cximage_build/Debug/jpeg.lib")

  16. //#pragma comment(lib, "./cximage_build/Debug/libdcr.lib")

  17. //#pragma comment(lib, "./cximage_build/Debug/libpsd.lib")

  18. //#pragma comment(lib, "./cximage_build/Debug/mng.lib")

  19. //#pragma comment(lib, "./cximage_build/Debug/png.lib")

  20. //#pragma comment(lib, "./cximage_build/Debug/tiff.lib")

  21. //#pragma comment(lib, "./cximage_build/Debug/zlib.lib")

 
  1. //cximage_test.cpp

  2. #include "stdafx.h"

  3. #include <stdio.h>

  4. #include <iostream>

  5. #include <string>

  6. using namespace std;

  7.  
  8.  
  9. #ifdef _DEBUG

  10. #define _CRTDBG_MAP_ALLOC

  11. #include <stdlib.h>

  12. #include <crtdbg.h>

  13. #endif

  14.  
  15. int _tmain(int argc, _TCHAR* argv[])

  16. {

  17. CxImage image;

  18. string imageName = "./1.jpg";

  19. string imageSave = "./2.tif";

  20.  
  21. image.Load((const TCHAR*)imageName.c_str(), CXIMAGE_FORMAT_JPG);

  22.  
  23. cout << image.GetBpp() << endl;

  24.  
  25. if (image.IsValid()) {

  26. image.GrayScale();

  27. image.Save((const TCHAR*)imageSave.c_str(), CXIMAGE_FORMAT_TIF);

  28.  
  29. cout << "success" << endl;

  30. }

  31.  
  32. cout << "ok" << endl;

  33. return 0;

  34. }

  35.  

二、cximage库下载路径

 

CxImage702:http://download.csdn.net/download/zhuyunier/10202259

Cximage600:http://download.csdn.net/download/zhuyunier/10202255

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值