Этот вопрос уже задан 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
Связывание с #pragma дали те же ошибки. И все файлы lib тоже не работают. – mimo