【问题标题】:CImg.h can't run in Xcode environmentCImg.h 无法在 Xcode 环境中运行
【发布时间】:2018-03-03 22:10:57
【问题描述】:

*****代码*****

#include "CImg.h"
#include <stdlib.h>

using namespace cimg_library;

int main() {

    CImg<unsigned char> image("lena.png");

    image.display();

    return 0;

}

*****错误***** 构建成功但卡在某个地方: 输出:

[CImg] * CImgIOException * [instance(0,0,0,0,0x0,non-shared)] CImg::load(): 无法打开文件 'lena.png' . libc++abi.dylib:以 cimg_library::CImgIOException 类型的未捕获异常终止:[instance(0,0,0,0,0x0,non-shared)] CImg::load(): 无法打开文件 'lena. png'。

【问题讨论】:

  • 这是链接的问题,链接器没有找到那些函数。您可以尝试检查您将框架/库添加到您的项目中
  • CImg 库似乎使用了您未链接的the X window system
  • 添加框架后 libX11.6.dylib 。仅剩 1 个错误。
  • 错误:找不到 -lX11.6 的库

标签: c++ cimg


【解决方案1】:

如果你想在 macOS 上使用CImg,你需要做几件事。

第 1 步 - PNG 支持

如果你想让CImg能够打开PNG文件,你必须先安装libpnglibz,你可以用homebrew来做如下:

brew install libpng

然后你必须告诉CImg你希望它包含对PNG文件的支持,你可以通过声明一个定义之前包括CImg.h

#define cimg_use_png 1
#include "CImg.h"

那么你必须告诉 Xcode 库在哪里。通过pkgconfig 是最简单的,所以安装它:

brew install pkg-config

现在您可以通过以下方式获取头文件 (#includes) 的路径:

pkg-config --cflags /usr/local/lib/pkgconfig/libpng.pc

输出

-I/usr/local/Cellar/libpng/1.6.34/include/libpng16

这告诉您在 Xcode 中为头文件的路径添加什么。然后你需要找到链接器设置:

pkg-config --libs /usr/local/lib/pkgconfig/libpng.pc

输出

-L/usr/local/Cellar/libpng/1.6.34/lib -lpng16 -lz

因此,您必须将其放入 Xcode 作为链接库的路径和要链接到的库的名称。

第 2 步 - X11 支持

完成此操作后,只有当您想在屏幕上显示图像时,您才需要设置 XQuartz,因为 ma​​cOS 不附带 X11不再是服务器。

所以,去to this website 下载并安装XQuartz。然后,您需要告诉 Xcode XQuartz 的标头(#includes)在哪里,即:

/opt/X11/include

以及如何与之链接:

-L /opt/X11/lib -lX11

Xcode 中有一些有用的屏幕截图,您需要根据我的回答 to this question 进行更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    相关资源
    最近更新 更多