我正在尝试编译一个需要 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/