1

この質問はすでにここで尋ねられていますが、提供する詳細がさらに多くあるため、新しい質問から始めるのが最善だと思います.

Visual Studio MSVC 2015 コンパイラを使用するプログラムで ImageMagick lib ファイルをリンクするのに問題があります。私が従った手順は次のとおりです。

  • 「configure.exe」ユーティリティを使用して静的 MT ランタイムをコンパイルし、それが生成したソリューション「VisualStaticMT.sln」を Visual Studio に組み込みました。これにより、C:\ImageMagick-6.9.3-2\VisualMagick\lib に「CORE_RL_Magick++_.lib」などの lib ファイルが作成されます。

  • 私の C++11 プログラムでは、ImageMagick に関連する構成は次のとおりです (QtCreator を使用していますが、MSVC2015 コンパイラを使用しています)。

    INCLUDEPATH += \
        C:\ImageMagick-6.9.3-2\ImageMagick\Magick++\lib \
        C:\ImageMagick-6.9.3-2\ImageMagick
    LIBS += \
        -lC:\ImageMagick-6.9.3-2\VisualMagick\lib\CORE_RL_Magick++_ \
        -lC:\ImageMagick-6.9.3-2\VisualMagick\lib\CORE_RL_wand_ \
        -lC:\ImageMagick-6.9.3-2\VisualMagick\lib\CORE_RL_magick_
    QMAKE_CXXFLAGS += \
        -DMAGICKCORE_HDRI_ENABLE=0 \
        -DMAGICKCORE_QUANTUM_DEPTH=16
    

プログラムの一部は次のとおりです。

#include <Magick++.h>
...
Magick::Image img;
img = Magick::Image(filename);

コンパイル時にリンク エラーが発生します。

movie.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall Magick::Image::Image(void)" (__imp_??0Image@Magick@@QAE@XZ) referenced in function "public: __thiscall Frame<unsigned char>::Frame<unsigned char>(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??0?$Frame@E@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)

movie.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall Magick::Image::Image(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (__imp_??0Image@Magick@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function "public: __thiscall Frame<unsigned char>::Frame<unsigned char>(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??0?$Frame@E@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)

movie.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall Magick::Image::~Image(void)" (__imp_??1Image@Magick@@UAE@XZ) referenced in function "public: __thiscall Frame<unsigned char>::Frame<unsigned char>(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??0?$Frame@E@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)

movie.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class Magick::Image & __thiscall Magick::Image::operator=(class Magick::Image const &)" (__imp_??4Image@Magick@@QAEAAV01@ABV01@@Z) referenced in function "public: __thiscall Frame<unsigned char>::Frame<unsigned char>(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??0?$Frame@E@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)

movie.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall Magick::Image::write(long,long,unsigned int,unsigned int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,enum MagickCore::StorageType,void *)" (__imp_?write@Image@Magick@@QAEXJJIIABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@W4StorageType@MagickCore@@PAX@Z) referenced in function "public: __thiscall Frame<unsigned char>::Frame<unsigned char>(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??0?$Frame@E@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)

movie.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: struct MagickCore::_Image const * __thiscall Magick::Image::constImage(void)const " (__imp_?constImage@Image@Magick@@QBEPBU_Image@MagickCore@@XZ) referenced in function "public: __thiscall Frame<unsigned char>::Frame<unsigned char>(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??0?$Frame@E@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
release\corr.exe : fatal error LNK1120: 6 unresolved externals

私が使用している「静的 MT ランタイム」には DLL が含まれていないはずなので、「dllimport」エラーには驚かされます。

問題を解決する方法について何か考えはありますか?

ありがとう。


編集

私が試したいくつかのこと:

  • ライブラリを main.cpp の以下の行にリンクすると、同じエラーが発生しました。

    #pragma comment(lib, "CORE_RL_Magick++_.lib")
    #pragma comment(lib, "CORE_RL_wand_.lib")
    #pragma comment(lib, "CORE_RL_magick_.lib")
    
  • C:\ImageMagick-6.9.3-2\VisualMagick\lib にある 27 個の lib ファイルをすべて追加しようとしました。CORE_RL_exr_.lib を除外すると、同じエラーが発生します。含めると、このファイルを追加しないことを示唆する追加のエラーが表示されます。

    CORE_RL_exr_.lib(IexBaseExc.obj):-1: error: LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in main.obj
    
4

3 に答える 3

0

おそらくいくつかのライブラリ ファイルが不足しています。プログラムがライブラリファイルをリンクできないため、リンカーエラーが発生します。lib ファイルを外部リンクしてみてください.. main メソッドの前にこのコードを試してください.. #pragma comment(lib, "CORE_DB_magick++.lib")

この lib ファイルは、以下のリンクからダウンロードできます。

https://github.com/moravianlibrary/Open-DPI-Detector/tree/master/OpenDpiDetector/Libraries/ImageMagick-6.7.6/VisualMagick/lib

于 2016-04-15T07:59:01.870 に答える