2016-04-15 5 views
0

Этот вопрос уже задан here, но поскольку у меня есть еще много деталей, я думаю, что лучше всего начать с нового вопроса.Ошибка компоновщика при попытке использовать ImageMagick как статические libraires с компилятором Visual Studio

У меня возникли проблемы с связыванием файлов ImageMagick lib в моей программе, которая использует компилятор Visual Studio MSVC 2015. Вот шаги, которые я последовавшие:

  • Я скомпилированные статические MT Время автономной работы с помощью «configure.exe» полезности и встроенные в Visual Studio решение он создан, «VisualStaticMT.sln». Это создает файлы lib, такие как «CORE_RL_Magick ++ _. Lib» в C: \ ImageMagick-6.9.3-2 \ VisualMagick \ 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)" ([email protected]@@[email protected]) 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> >)" ([email protected]@@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@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 &)" ([email protected]@@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@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> >)" ([email protected]@@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@Z) 

movie.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall Magick::Image::~Image(void)" ([email protected]@@[email protected]) 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> >)" ([email protected]@@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@Z) 

movie.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class Magick::Image & __thiscall Magick::Image::operator=(class Magick::Image const &)" ([email protected]@@[email protected]@@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> >)" ([email protected]@@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@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 *)" ([email protected]@[email protected]@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected]) 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> >)" ([email protected]@@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@Z) 

movie.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: struct MagickCore::_Image const * __thiscall Magick::Image::constImage(void)const " ([email protected]@[email protected]@[email protected]@@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> >)" ([email protected]@@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@Z) 
release\corr.exe : fatal error LNK1120: 6 unresolved externals 

Ошибка «dllimport» меня удивляет, так как я думаю, что не должно быть DLL, связанной с «статическими MT runtimes», которые я использую.

Любая идея о том, как я могу решить проблему?

Спасибо.


EDIT

Еще несколько вещей, которые я пробовал:

  • увязку libraires с строчками ниже в main.cpp дали те же ошибки:

    #pragma comment(lib, "CORE_RL_Magick++_.lib") 
    #pragma comment(lib, "CORE_RL_wand_.lib") 
    #pragma comment(lib, "CORE_RL_magick_.lib") 
    
  • Я попытался добавить все 27 файлов lib loca ted in C: \ ImageMagick-6.9.3-2 \ VisualMagick \ 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 
    

ответ

0

вероятно вам не хватает некоторые файлы библиотек. потому что ваша программа не может связать файл библиотеки, поэтому она дает ошибку компоновщика. Попытайтесь связать файл lib извне .. попробуйте этот код перед основным методом. #pragma comment (lib, "CORE_DB_magick ++. Lib")

Вы можете скачать этот файл из приведенной ниже ссылки.

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

+0

Связывание с #pragma дали те же ошибки. И все файлы lib тоже не работают. – mimo

 Смежные вопросы

  • Нет связанных вопросов^_^