配置 CxImage 以满足特定需求的实操指南
一、先明确你的目标与取舍
- 明确要支持的图像格式(如:BMP/JPG/PNG/GIF/ICO/TIFF/WEBP等),只开启需要的格式能显著减小体积与依赖。
- 选择链接方式:静态库(.lib,便于分发、单文件)或动态库(.dll,体积小、需运行时部署)。
- 选择字符集与运行库:尽量统一为多字节或Unicode中的一种;运行库(如MT/MTd/MD/MDd)在所有依赖库之间必须一致,避免链接冲突。
- 规划依赖库:CxImage 依赖zlib(必选),以及按需的libjpeg、libpng、libtiff、libjasper、libjbig等编解码库。
- 规划构建产物布局:建议统一输出目录(如Include/、Lib/、Bin/),便于引用与发布。
二、Windows 下的配置步骤(VC++/MFC 通用)
- 获取与编译依赖与库
- 打开官方提供的解决方案(如:CxImageFull_vc10.sln 或 CxImageFull.dsw),按依赖顺序构建:zlib → libpng → libjpeg → libtiff → libjasper → CxImage(不同版本工程名略有差异)。
- 若使用旧版 VC6,注意选择非 UNICODE 配置进行构建。
- 工程包含与库目录
- 在你的应用工程里添加包含目录:…\CxImage\Include。
- 添加库目录:…\CxImage\Lib\Debug 与 …\CxImage\Lib\Release(或你自定义的集中输出目录)。
- 链接库设置
- 在“链接器 → 输入 → 附加依赖项”添加所需库,例如:cximage.lib、jpeg.lib、png.lib、zlib.lib;若启用 TIFF/JP2/Jasper 等,再追加 tiff.lib、jasper.lib 等。
- 头文件与预编译头
- 在公共头文件(如 stdafx.h 或预编译头之后)加入:
#include "ximage.h"。
- 建议对 CxImage 相关工程关闭预编译头(或统一使用/不使用),避免 PCH 不一致导致的问题。
- 运行库一致性
- 工程属性 → C/C++ → 代码生成 → 运行库,统一为**/MD 与 /MDd**(或 /MT 与 /MTd),与所有依赖库保持一致。
三、Linux 下的配置思路(以 CentOS 为例)
- 准备环境
- 安装编译工具与依赖:如 gcc/g++、make、cmake,以及 zlib-devel、libjpeg-turbo-devel、libpng-devel、libtiff-devel、jasper-devel 等(按你要启用的格式选择)。
- 获取与构建
- 下载 CxImage 源码,进入目录后创建构建目录并配置(可用 CMake 或手工改写 Makefile)。
- 在构建配置中仅启用需要的格式,并链接系统已安装的依赖库(例如:-lz -ljpeg -lpng -ltiff -ljasper)。
- 安装与使用
- 执行
make && sudo make install(或自定义安装前缀),将头文件放入 /usr/local/include、库文件放入 /usr/local/lib。
- 在你的应用编译命令中加入:
-I/usr/local/include -L/usr/local/lib -lcximage -ljpeg -lpng -lz ...,并链接你的应用代码。
四、按需求裁剪与常见开关
- 格式裁剪(在 ximacfg.h 中开关)
- 依赖与链接
- zlib 是必选依赖;PNG 依赖 zlib;JPEG 依赖 libjpeg;TIFF 依赖 libtiff;JP2/Jasper 依赖 libjasper。
- 链接顺序与依赖顺序保持一致,避免未定义引用。
- 运行库与字符集
- 全工程统一运行库与字符集设置,避免跨库调用时的 CRT/UNICODE 冲突。
- 发布与部署
- 静态链接:将应用与 CxImage 及其依赖一起打包,部署简单、体积较大。
- 动态链接:分发时确保 cximage.dll 与所有依赖 DLL 位于可执行文件可搜索路径(与 .exe 同目录或系统路径)。
五、快速验证与常见问题