Как связать библиотеку Imagemagick с Qt (windows) - PullRequest
2 голосов
/ 10 ноября 2010

Я разработал приложение для Mac и вот уже месяц я пытаюсь связать Qt с ImageMagick в Windows.

Я просто не могу найти файлы и версию библиотеки Imagemagick, которые должны быть связаны с Qt, чтобы мое приложение работало на Windows.

Я пробовал большинство библиотек из здесь

Это единственное, что я добавил в файл .pro во время разработки на Mac

INCLUDEPATH += . /opt/local/include/ImageMagick
LIBS += -L/opt/local/lib -lMagick++

Когда я добавляю это в мой .pro

INCLUDEPATH += C:/im6/include/ImageMagick
LIBS += C:/im6/lib/libMagickWand.a
LIBS += C:/im6/lib/libMagick++.a
LIBS += C:/im6/lib/libMagickCore.a
C:/im6/lib/libMagick++.a

Я получаю 10.000 + одинаковых ошибок к этому:

(Image.o):C:\msys\1.0\home\cristy\ImageMagick-6.6.6-0/Magick++/lib/Image.cpp:4157: undefined reference to `__gxx_personality_sj0'

    C:/im6/lib/libMagick++.a(Image.o):C:\msys\1.0\home\cristy\ImageMagick-6.6.6-0/Magick++/lib/Image.cpp:4157: undefined reference to `_Unwind_SjLj_Register'

    C:/im6/lib/libMagick++.a(Image.o):C:\msys\1.0\home\cristy\ImageMagick-6.6.6-0/Magick++/lib/Image.cpp:4178: undefined reference to `_Unwind_SjLj_Unregister'

Для дополнительных ошибок проверьте это

Кто-нибудь пытался собрать и развернуть приложение ImageMagick, используя qt на windows? Какие файлы мне нужно связать при сборке и какие файлы при развертывании?

Ответы [ 4 ]

2 голосов
/ 10 ноября 2010
  1. Сообщение об ошибке говорит мне, что вы используйте mingw (с qtcreator). Ваш библиотека может не работать с этим компилятор. Вам нужна версия Mingw библиотеки, вероятно, по имени libmagick.a.

  2. LIBS + = -L $$ цитата (c: / Program Files / ImageMagick-6.6.5-Q16 / lib) -lmagick (см. документацию о файлах проекта qmake

0 голосов
/ 17 декабря 2010

Я обнаружил, что набор инструментов minGW очень воспринимается как «пасынок» в мире Windows. Я знаю, что это не поможет вашей конкретной ситуации, но у нас были многочисленные проблемы со сторонними библиотеками при попытке использовать Qt с minGW. Всегда были дополнительные шаги или несуществующие инструкции по сборке, которые мы должны были выяснить или настроить.

Как только мы перешли на версию MSVC, все эти проблемы исчезли. Обратите внимание, что это не означает, что вы должны использовать Visual Studio (вы все еще можете использовать Qt creator), это просто означает, что используется компилятор Visual Studio. Вы можете получить компилятор бесплатно, используя Platform SDK. Если это вариант, вы можете сэкономить много боли, переключившись прямо сейчас. К сожалению, это всего лишь текущий статус-кво, по крайней мере, как мы обнаружили.

0 голосов
/ 15 декабря 2010

Нельзя связываться с библиотекой ImageMagick ++, созданной с помощью MSVC, поскольку библиотеки mingw и MSVC несовместимы с библиотеками C ++. Вы не можете связать библиотеку C ++, созданную MSVC, с проектом mingw, и наоборот. Библиотеки C-only работают нормально. Также, согласно этому потоку fortum , использование сборок со старыми версиями mingw с текущими версиями mingw не работает, поскольку изменилась обработка исключений (поскольку вы получаете больше ошибок, чем это, я не ожидал быть единственной проблемой, хотя). Если для вашей версии mingw нет бинарного пакета (а я не вижу его на веб-сайте imagemagick), ваш единственный вариант - использовать исходный пакет, как предлагает Smar.

Другой вариант, конечно, это установить Visual Studio, скачать Qt для MSVC и собрать свой проект с MSVC.

0 голосов
/ 13 декабря 2010

Пожалуйста, получите исходный пакет ImageMagick.

Я не могу дать прямых инструкций о том, как работать с MinGW из Qt Creator, но в основном следующее. Я предпочитаю использовать qtvars.bat, который поставляется с двоичными дистрибутивами Qt, для установки среды.

  1. Открыть Windows cmd
  2. Установите PATH для / path / to / mingw / bin и / path / to / qt / bin перед другими путями
  3. Перейдите в каталог, в который вы извлекли источник ImageMagick
  4. читать README, INSTALL и т.п. для компиляции ImageMagick (скорее всего просто ./configure; mingw32-make, но никогда не быть уверенным)
  5. Отредактируйте ваш .pro-файл с помощью чего-нибудь вроде LIBS + = -L $$ цитата (/ path / to / imagemagick / lib / dir) -lmagick. Библиотека может находиться в bin dir или в lib dir. Смотрите ответ hmuelner для получения дополнительной информации.

На этом этапе конфигурация должна быть готова. Компиляция в Qt Creator должна работать, но вы также можете использовать эти окна cmd для компиляции вашей программы: перейдите в каталог программ, запустите «qmake» и «mingw32-make».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...