8

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

我正在尝试编译使用 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++ 标头吗?

提前致谢!西蒙

4

3 回答 3

11

由于您在 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用来确定编译时间和链接时间附加标志的。

于 2014-04-28T01:13:50.560 回答
2

ImageMagick 附带了一个配置实用程序,可以为您提供正确的路径。对于 Magick++,它很简单Magick++-config(参见Magick++ 文档中的用法部分。)

IM_CXXFLAGS=$(Magick++-config --cxxflags)
IM_LDFLAGS=$(Magick++-config --ldflags)
g++ $IM_CXXFLAGS $IM_LDFLAGS main.cpp

您将需要使用系统的包含语句 ( <>),并通过包含父标头来保持简单。

#include <Magick++.h>
于 2014-04-28T11:30:57.573 回答
1

如果您只需要单个文件,这里是 Magick++ 模块的正确构建命令:

g++ `Magick++-config --cxxflags --cppflags` -O2 -Wall -o yourProgramName yourFile.cpp `Magick++-config --ldflags --libs`

如果它不起作用,您可能需要先安装libmagick++-dev

sudo apt-get install libmagick++-dev

并从 Unix 源安装 imageMagick:

  1. 从这里下载ImageMagick-7.0.3-5.tar.gz
  2. 使用此处的说明安装它
于 2016-11-08T12:57:38.163 回答