2017-06-13 15 views
2

現在、Magick ++ APIを使用してコンパイルする簡単なC++コードを取得しようとしています。私が習熟している実際のコードは単純な汚れです。 Magick ++。hを先頭に#をつけて "hello world"にしてください。Magick ++(ライブラリの問題)でコードをコンパイルできません

コンパイラが-lMagick ++を見つけることができないという問題があります。

g++ `Magick++-config --cppflags` -o hello hello_world.cpp \ `Magick++-config --ldflags --libs` 
:でコンパイル

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

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

: 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ファイルをインストールしなかった

以下のエラーを参照してください。

戻ってくるもの:

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

'Magick ++ - config --cppflags'と' Magick ++ - config --ldflags --libs'の出力を表示してください – iehrlich

+0

'-fopenmp'はどこから来ましたか? –

答えて

0

--cppflagsからを削除するだけです。コンパイラが(自動構成時に)機能をサポートしているので、Magick(Core|Wand|++)-configによって追加されますが、システムでOpenMPが使用可能であることを意味するわけではありません。 LLVM-clangを使用しているときはいつもこのようになります。OpenMP plugin

これを解決するには、ImageMagickを再構成+ --disable-openmpで再コンパイルすることができます。

gcc用にOpenMPをインストールすることもできます。

それとも個人的にタグ

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

を取り除く - 私はちょうど+リンクをコンパイルすると、あなたがより快適になるまで、タグを除去をお勧めして、OpenMPのプラグイン/フィーチャーのインストールについて見ることになります。

関連する問題