我目前正在尝试使用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.)
答案 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插件/功能。