温馨提示×

Linux下cximage怎么配置

小樊
37
2026-06-30 17:55:36
栏目: 智能运维

在 Linux 下使用 CxImage 其实不太常见(它最早是 Windows/MFC 的库),但在 Linux 里也是可以编译和使用的,主要是把它当作一个静态或动态图像处理库来用。下面我按实际可操作步骤给你详细说明。


一、CxImage 是什么?

CxImage 是一个 C++ 图像库,支持:

  • BMP / JPEG / PNG / TIFF / GIF / TGA / PCX / WMF / ICO 等
  • 图像处理(缩放、旋转、格式转换等)

⚠️ 注意

  • CxImage 不是跨平台设计得很好的库
  • 在 Linux 下使用需要修改部分代码
  • 现在更推荐用 OpenCV / ImageMagick / libpng + libjpeg
    但如果你项目必须用它,下面方法可行

二、Linux 下使用 CxImage 的典型方案

✅ 推荐方式

在 Linux 下手动编译 CxImage 为静态库,然后链接到你的程序


三、准备依赖库(非常关键)

CxImage 依赖以下第三方库:

sudo apt update
sudo apt install build-essential
sudo apt install libjpeg-dev libpng-dev libtiff-dev libgif-dev

如果是 CentOS / Rocky / Alma:

sudo yum groupinstall "Development Tools"
sudo yum install libjpeg-devel libpng-devel libtiff-devel giflib-devel

四、获取 CxImage 源码

1️⃣ 下载源码

官方版本(较老):

wget https://github.com/oscar-broman/cximage/archive/refs/heads/master.zip
unzip cximage-master.zip
cd cximage-master

或直接用 git:

git clone https://github.com/oscar-broman/cximage.git

五、编译 CxImage(Linux)

1️⃣ 进入源码目录

cd cximage

2️⃣ 编译(Makefile 方式)

有些版本已经带 Makefile,有些没有。
如果你看到 Makefile,直接:

make

如果没有 Makefile:

✅ 手动编译(最稳妥)

g++ -c -fPIC \
  *.cpp \
  -I. \
  -Ijpeg \
  -Ipng \
  -Itiff \
  -Ilzma \
  -Ijbig \
  -Izlib

然后打包成静态库:

ar rcs libcximage.a *.o

六、在自己的 C++ 项目中使用 CxImage

示例目录结构

project/
├── main.cpp
├── include/
│   └── CxImage/
│       └── ximage.h
├── lib/
│   └── libcximage.a

示例 main.cpp

#include <iostream>
#include "CxImage/ximage.h"

int main() {
    CxImage image;

    if (!image.Load("test.jpg", CXIMAGE_FORMAT_JPG)) {
        std::cerr << "Load image failed" << std::endl;
        return -1;
    }

    image.Save("test.png", CXIMAGE_FORMAT_PNG);
    std::cout << "Convert success" << std::endl;

    return 0;
}

编译命令

g++ main.cpp \
  -I./include \
  -L./lib \
  -lcximage \
  -ljpeg -lpng -ltiff -lz \
  -std=c++11 \
  -o test

七、常见问题与解决方法

1️⃣ CxImage.h: No such file or directory

  • 头文件路径不正确
  • 需要用 -I 指定正确路径

2️⃣ undefined reference to CxImage::Load

  • 没有链接 CxImage 库
  • 或库编译时没有包含该 cpp 文件

3️⃣ Linux 下 CxImage 中文路径问题

  • Linux 默认 UTF-8
  • 避免用宽字符 wchar_t
  • 或自行改源码

4️⃣ MFC / Windows API 错误

  • CxImage 部分代码依赖 windows.h
  • 需要:
    • 删除 MFC 依赖
    • 或打补丁
    • 或用 Linux 移植版(GitHub 上有)

八、不推荐 & 推荐替代方案

❌ 不推荐

  • 新项目使用 CxImage
  • 大型图像处理系统

✅ 推荐替代

需求 推荐
简单图像读写 stb_image
工业/视频 OpenCV
命令行处理 ImageMagick
轻量 C libpng + libjpeg

九、总结一句话

Linux 下使用 CxImage 需要:

  • 安装图像依赖库
  • 手动编译 CxImage 为 .a.so
  • 使用 C++ 链接并修正平台相关问题

如果你愿意,可以告诉我:

  • ✅ 你的 Linux 发行版(Ubuntu / CentOS / 嵌入式)
  • ✅ 是 ARM 还是 x86
  • ✅ CxImage 必须用于新项目还是维护老项目

我可以给你 一套完全可用的 Makefile 或 CMake 示例

0