从 ImageMagick 安装 Mac 操作系统时 C 编译 fatal error 'file not found'

标签 c macos imagemagick

我正在尝试编译一个需要 Image Magick 的 MagickWand.h 的 C 程序:

#include "wand/MagickWand.h"

但是我的 Image Magick 是通过 Homebrew 安装在我的 Mac 上,所以我将 include 更改为实际位置:

#include </usr/local/Cellar/imagemagick/6.8.9-7/include/ImageMagick-6/wand/MagickWand.h>

但是,当我编译该程序时,我收到以下错误:

/usr/local/Cellar/imagemagick/6.8.9-7/include/ImageMagick-6/wand/MagickWand.h:71:10: fatal error: 'wand/method-attribute.h' file not found
#include "wand/method-attribute.h"

现在,当这个错误出现时,我一直在进入.h文件并更改它们的#includes,以便它们被正确指向(因为这似乎是问题所在),但这里总是有一个新的错误,我不想因为 Homebrew 安装而花费数小时手动更新这些内容。有谁对如何解决这个问题有任何建议,而无需手动更新每个文件?我不确定问题到底是什么,所以也许有一个更优雅的解决方案。

最佳答案

您的代码应包含MagickWand库作为系统 header ,并保留通用路径。这将防止您将来的编译在系统/库更新时中断。

#include <wand/MagickWand.h>

通过设置预处理器包含标志 -I 以及使用 -L-l< 的链接/库选项,告诉 C 编译器自制程序安装 ImageMagick 的位置 标志。

示例:

clang -I/usr/local/Cellar/imagemagick/6.8.9-7/include/ImageMagick-6 \
      myProject.c -o myProject.o \
      -L/usr/local/Cellar/imagemagick/6.8.9-7/lib \
      -lMagickWand-6.Q16 \
      -lMagickCore-6.Q1

为了简化整个过程,ImageMagick 提供了 MagickWand-config 实用程序。这将为您处理库、包含和定义。

示例:

CFLAGS=$(MagickWand-config --cflags)
LFLAGS=$(MagickWand-config --libs)
clang $CFLAGS myProject.c -o myProject.o $LFLAGS

关于从 ImageMagick 安装 Mac 操作系统时 C 编译 fatal error 'file not found',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26352148/

相关文章:

macos - 如何在非视网膜显示器上模拟 Mac OS X 10.8 Mountain Lion 中的视网膜显示器(HiDPI 模式)?

javascript - navigator.platform 在 ARM Mac 上的值(value)是什么?

php - 我如何将这个 ImageMagick 命令翻译成它的 PHP Imagick 等效命令?

pdf - 如何运行imagemagick将多个PDF文件仅第一页批量转换为JPEG?

c++ - 我应该将像素的 rgb 值视为一个值吗?

c - 从输入文件中打印 5 行

检查麦克风是否已在 Linux 上与 C 一起使用

C、前后自增,不同程序答案不同

c++ - C++ 中的图形应用程序和 C 中的代码 **Qt 编程**

linux - 为什么 OS X 10 中的默认 shell 与 Linux(Mint、Lubuntu...)中的默认 shell 看起来不同?