c++ - 找不到 Magick++ 头文件

标签 c++ linux g++ imagemagick magick++

希望有人能帮助我,因为我完全不知所措。我已经在 Internet 上搜索过了,真的找不到更多可以帮助我的东西。

我正在尝试编译使用 Magick++ 库的 C++ 程序。我已经安装了 Magick++,看起来还不错。在我当前的目录中有 main.cpp,我正在运行 g++ main.cpp。我收到以下错误...

In file included from main.cpp:3:0:
/home/simeon/ImageMagick-6.8.9-0/Magick++/lib/Magick++.h:9:30: fatal error: Magick++/Include.h: No such file or directory
compilation terminated.

为了尝试解决这个问题,我在我的 main.cpp 中声明了 Magick++.h 的绝对路径,所以我有这个似乎正在工作......

#include "/home/simeon/ImageMagick-6.8.9-0/Magick++/lib/Magick++.h"

错误发生在 Magick++.h 的第 9 行(它是由于我的绝对路径而发现的),看起来像这样......

#include <Magick++/Include.h>

这是我感到困惑的地方,因为这个文件确实存在于它所说的地方。如果我跑

 cat /home/simeon/ImageMagick-6.8.9-0/Magick++/lib/Magick++/Include.h

然后文件可以毫无问题地打开并显示其内容。

有人对发生的事情有什么建议吗?我不明白为什么我需要指定一个绝对路径,为什么 g++ 一开始就找不到头文件。有什么办法可以告诉 g++ 在特定位置查找 Magick++ header 吗?

提前致谢! 西蒙

最佳答案

既然你是在Linux下,我想你可以安装安装时自带的imagemagick包。它适用于我所知道的所有 Linux 版本。

在 Debian/Ubuntu 下它会是这样的:

sudo apt-get install libmagick++-dev

否则,我个人会使用 cmake做所有的设置。起初它有点学习曲线,但随后它会为您自动执行这些操作。

在我看来,如果您的命令行是:

g++ main.cpp

那么您就缺少了几个-I 选项。安装软件包可能不需要您使用 -I 选项(因为我使用 cmake 并且没有真正注意那些事情......它只适合我.)

所以要解决你的问题,你可能需要这样的东西:

g++ -I/home/simeon/ImageMagick-6.8.9-0/Magick++/lib main.cpp

此外,如果您只有一个 .cpp 文件,您可能需要使用 -o myprog 命令行选项。

要使编译和链接步骤按预期工作,您可能需要使用 Magick 的 pkgconfig 定义

# compile
pkg-config --cflags /usr/lib/x86_64-linux-gnu/pkgconfig/ImageMagick++.pc

# link
pkg-config --libs /usr/lib/x86_64-linux-gnu/pkgconfig/ImageMagick++.pc

这些命令实际上是 cmake 试图用来确定编译时间和链接时间附加标志的命令。

关于c++ - 找不到 Magick++ 头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23326705/

相关文章:

c++ - 额外的反斜杠字符不会影响我的程序。为什么?

c++ - 在 Windows 下为 OpenCV 编译 MinGW 库

regex - 查找/替换目录和 Bash 脚本

java - 类路径设置但 java.lang.NoClassDefFoundError com/google/protobuf/MessageOrBuilder 错误?

c++ - C++中的宏可以定义宏吗?

c++ - 使用 CMake 与其他静态库链接的静态库 - 一个有效,一个无效。为什么?

又是 C++ 函数指针。语法困惑

c++ - 如何用按位运算实现位 vector ?

C++ Boost.Asio 对象生命周期

c - 父进程不等待子进程 - C