首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到Magick++头文件

找不到Magick++头文件
EN

Stack Overflow用户
提问于 2014-04-28 01:38:34
回答 3查看 16.5K关注 0票数 8

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

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

代码语言:javascript
复制
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的绝对路径,这样我就有了这个似乎可以工作的……

代码语言:javascript
复制
#include "/home/simeon/ImageMagick-6.8.9-0/Magick++/lib/Magick++.h"

错误出现在Magick++.h中的第9行(由于绝对路径,它会找到它),如下所示...

代码语言:javascript
复制
#include <Magick++/Include.h>

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

代码语言:javascript
复制
 cat /home/simeon/ImageMagick-6.8.9-0/Magick++/lib/Magick++/Include.h

然后该文件打开,没有问题,并显示其内容。

有没有人对发生了什么有什么建议?我不明白为什么我需要指定一个绝对路径,为什么g++一开始就没有找到头文件。有没有办法让g++在特定位置查找Magick++头?

提前感谢!Simeon

EN

回答 3

Stack Overflow用户

发布于 2014-04-28 09:13:51

由于您使用的是Linux,因此我认为您可以安装随安装一起提供的imagemagick包。据我所知,它可以在所有版本的Linux上使用。

在Debian/Ubuntu下应该是这样的:

代码语言:javascript
复制
sudo apt-get install libmagick++-dev

否则,我个人会使用cmake来完成所有的设置。一开始,这是一个学习曲线,但随后它会自动为您完成这些工作。

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

代码语言:javascript
复制
g++ main.cpp

那么你就少了几个-I选项。安装这个包可能不需要你使用-I选项(因为我使用的是cmake,并不太注意这些东西……它只适用于我。)

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

代码语言:javascript
复制
g++ -I/home/simeon/ImageMagick-6.8.9-0/Magick++/lib main.cpp

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

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

代码语言:javascript
复制
# 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试图用来确定编译时间和链接时间附加标志的命令。

票数 11
EN

Stack Overflow用户

发布于 2014-04-28 19:30:58

ImageMagick附带了一个配置实用程序,可以为您提供正确的路径。对于Magick++,它就是Magick++-config (请参阅Magick++文档中的Usage一节)。

代码语言:javascript
复制
IM_CXXFLAGS=$(Magick++-config --cxxflags)
IM_LDFLAGS=$(Magick++-config --ldflags)
g++ $IM_CXXFLAGS $IM_LDFLAGS main.cpp

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

代码语言:javascript
复制
#include <Magick++.h>
票数 2
EN

Stack Overflow用户

发布于 2016-11-08 20:57:38

如果您只需要单个文件,下面是适用于Magick++模块的构建命令:

代码语言:javascript
复制
g++ `Magick++-config --cxxflags --cppflags` -O2 -Wall -o yourProgramName yourFile.cpp `Magick++-config --ldflags --libs`

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

代码语言:javascript
复制
sudo apt-get install libmagick++-dev

并从Unix源代码安装imageMagick:

使用instructions from here下载

  1. ImageMagick-7.0.3-5.tar.gz it
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23326705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档