2016-12-21 6 views
0

ImageMagickを使用して画像をC++アプリケーションに読み込もうとしています。私はXcode 7で開発しています。そして、私は苦労しています。ここに私のコードです。XCode C++アプリケーションでImageMagickを使用する際の問題

#include "Magick++.h" 

int main(int argc, const char * argv[]) { 
    Magick::Image img; 
    return 0; 
} 

下記のエラーが発生します。

Ld /Users/ndwork/Library/Developer/Xcode/DerivedData/clsFusion-ghktzemmmuxtfidyywslbqxztyqz/Build/Products/Debug/clsFusion normal x86_64 
    cd /Users/ndwork/Desktop/clsFusion 
    export MACOSX_DEPLOYMENT_TARGET=10.11 
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -L/Users/ndwork/Library/Developer/Xcode/DerivedData/clsFusion-ghktzemmmuxtfidyywslbqxztyqz/Build/Products/Debug -L/opt/X11/lib -F/Users/ndwork/Library/Developer/Xcode/DerivedData/clsFusion-ghktzemmmuxtfidyywslbqxztyqz/Build/Products/Debug -filelist /Users/ndwork/Library/Developer/Xcode/DerivedData/clsFusion-ghktzemmmuxtfidyywslbqxztyqz/Build/Intermediates/clsFusion.build/Debug/clsFusion.build/Objects-normal/x86_64/clsFusion.LinkFileList -mmacosx-version-min=10.11 -Xlinker -no_deduplicate -stdlib=libc++ -lX11.6 -Xlinker -dependency_info -Xlinker /Users/ndwork/Library/Developer/Xcode/DerivedData/clsFusion-ghktzemmmuxtfidyywslbqxztyqz/Build/Intermediates/clsFusion.build/Debug/clsFusion.build/Objects-normal/x86_64/clsFusion_dependency_info.dat -o /Users/ndwork/Library/Developer/Xcode/DerivedData/clsFusion-ghktzemmmuxtfidyywslbqxztyqz/Build/Products/Debug/clsFusion 

Undefined symbols for architecture x86_64: 
    "Magick::Image::Image()", referenced from: 
     _main in main.o 
    "Magick::Image::~Image()", referenced from: 
     _main in main.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Magick ++。hがあるディレクトリがヘッダー検索パスに含まれていることがわかります。私はこれを解決する方法がわかりません。私は自作でImageMagickをインストールしました。

すべてのご協力ありがとうございます。

答えて

5

あなたはhomebrewパッケージがpkg-configがインストールされて呼び出されていない場合は、でその最初のインストール:それは、その後どのようにそれが知っているすべてのパッケージをコンパイルしてリンクする方法を教えて、それでは、どのようなパッケージを見てみましょうことができ

brew install pkg-config 

それは知っている程度:

pkg-config --list-all | grep -i Magick 

サンプル出力

... 
... 
libswscale       libswscale - FFmpeg image rescaling library 
ImageMagick       ImageMagick - ImageMagick - convert, edit, and compose images (ABI Q16HDRI) 
vips-cpp       vips-cpp - C++ API for vips8 image processing library 
lept        leptonica - An open source C library for efficient image processing and image analysis operations 
MagickCore-7.Q16HDRI    MagickCore - MagickCore - C API for ImageMagick (ABI Q16HDRI) 
MagickWand       MagickWand - MagickWand - C API for ImageMagick (ABI Q16HDRI) 
gdk-pixbuf-2.0      GdkPixbuf - Image loading and scaling 
OpenEXR        OpenEXR - OpenEXR image library 
vips        vips - Image processing library 
Magick++       Magick++ - Magick++ - C++ API for ImageMagick (ABI Q16HDRI) 
... 
... 

いいえ、Magick++はあなたによく見えます。 (#includes用)ヘッダファイルのパスを見つけるのをしてみましょう:

pkg-config --cflags-only-I Magick++ 

サンプル出力

-I/usr/local/Cellar/imagemagick/HEAD-a781824/include/ImageMagick-7 

とリンカのフラグ - 実際にあなたの問題です:

pkg-config --libs Magick++ 

サンプル出力

-L/usr/local/Cellar/imagemagick/HEAD-a781824/lib -lMagick++-7.Q16HDRI -lMagickWand-7.Q16HDRI -lMagickCore-7.Q16HDRI 

明らかに、あなたの値はImageMagickで構築したビルド時オプションによって異なりますので、私のものではなくあなた自身の値を使用してください。 -

は今、あなただけのXcodeにそれらを配置する必要がありますので、あなたはすなわち、上記学んだ内容で順番や編集に赤概説ボックスをクリックしてください:

  • ヘッダ検索パス
  • ライブラリ検索パス

enter image description here

あなた寿にリンクする

  • ライブラリ

    pkg-config --cflags-only-other Magick++ 
    

    サンプル出力あなたは満足している場所で

    -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16 
    

    :ldはまたによって提案されたのと同じ定義を定義します。

  • +0

    ありがとうございます! – user24205

    関連する問題