无法使用Magick ++编译代码(库问题)

时间:2017-06-13 00:12:53

标签: c++ g++ cygwin imagemagick magick++

我目前正在尝试使用Magick ++ API编译一个简单的c ++代码。实际的代码我很简单。只是一个"你好世界" #include Magick ++。h在顶部。

问题是编译器似乎无法找到-lMagick ++。请参阅以下错误

ImageMagick是通过windows 7在cygwin中的二进制文件安装的。我在安装后进行了以下配置

export MAGICK_HOME="$HOME/ImageMagick-6.8.8"
export PATH="$MAGICK_HOME/bin:$PATH"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$MAGICK_HOME/lib"
export PKG_CONFIG_PATH="$MAGICK_HOME/lib/pkgconfig"

CPP文件:

#include <iostream>
#include <Magick++.h>
using namespace std;

int main( int argc, char ** argv) 
{
    InitializeMagick(*argv);
    cout<<"Hello Magick++"<<endl;
    return 0;
}

编译:

g++ `Magick++-config --cppflags` -o hello hello_world.cpp \ `Magick++-config --ldflags --libs`

回吐:

g++:  -lMagick++: No such file or directory 
cc1plus: warning: command line option "-fopenmp" is valid for D but not for C++
hello_world.cpp: In function `int main(int, char**)':
hello_world.cpp:7: error: `InitializeMagick' undeclared (first use this function)
hello_world.cpp:7: error: (Each undeclared identifier is reported only once for each function it appears in.)

1 个答案:

答案 0 :(得分:0)

只需从-fopenmp中删除--cppflags即可。它由Magick(Core|Wand|++)-config添加,因为您的编译器支持该功能(在autoconfig时),但并不意味着(或检查)OpenMP可用于系统。我在使用LLVM-clang时总是得到这个,忘了安装OpenMP plugin

您可以修复此问题,重新配置+使用--disable-openmp重新编译ImageMagick。

或者可能为gcc安装OpenMP

或者只是删除标签

g++ -o hello \
    `Magick++-config --cppflags | sed 's/-fopenmp//g'` \
    `Magick++-config --libs | sed 's/-fopenmp//g'` \
    hello_world.cpp

就个人而言 - 我建议只删除标签,直到你更熟悉编译+链接,然后看看如何安装openmp插件/功能。