Ошибка компиляции исходного кода в MagickNet C ++ - PullRequest
0 голосов
/ 07 апреля 2009

Я пытаюсь скомпилировать рабочую копию библиотеки классов (DLL) MagickNet , используя источники из библиотек ImageMagick и MagickNet.

Мне не удалось получить копию исходных файлов MagickNet с домашней страницы создателя, так как она в данный момент недоступна, поэтому я был вынужден получить файлы и файл проекта C ++ из здесь , предоставлено Google поиск.

Следуя инструкциям, указанным здесь и здесь , я создал проект с использованием опции «статическая многопоточная DLL» и скомпилировал его, прежде чем перейти к файлу проекта MagickNet и скомпилировать это также, убедившись, что все пути указывают на правильные папки.

Несмотря на это, я продолжаю получать эту ошибку при компиляции:

CORE_RL_magick_.lib(nt-base.obj) : error LNK2005: _DllMain@12 already defined in MSVCRT.lib(dllmain.obj)

Я также получаю 371 другую ошибку, все они связаны с «неразрешенным внешним символом xxxxxxxx» и последней 372-й ошибкой, описывающей, что у меня «195 неразрешенных внешних объектов».

Мне удалось устранить ошибку DllMain, описанную выше, закомментировав объявление DllMain из исходного файла nt-base.c из проекта CORE_magick в решении ImageMagick, однако все еще остаются 372 другие «неразрешенные внешние ошибки».

Я выполнил (Google) поиск людей с похожими проблемами, и некоторые сказали, что автор предложил загрузить предварительно скомпилированную DLL-библиотеку MagickNet, которая работает на 100%, однако (как я упоминалось ранее) его домашняя страница сейчас недоступна.

В настоящее время я ищу одно из следующих решений:

  1. Решение моей проблемы с компиляцией, поскольку я могу ошибаться с моей стороны, поскольку я совсем не знаком с C ++,
  2. Ссылка на другой исходный файл MagickNet / zip проекта, которая на 100% подтверждена для правильной компиляции с последней версией ImageMagick,
  3. Ссылка на 100% работающую скомпилированную копию DLL-библиотеки MagickNet, если кто-то сохранил копию с домашней страницы автора. Он должен быть примерно 3 МБ, поскольку он также содержит библиотеки ImageMagick.

Я был бы очень признателен за любое из этих решений, так как мне крайне необходима способность ImageMagick манипулировать и преобразовывать изображения, а также простота использования MagickNet. Я могу предоставить дополнительную информацию, если вам нужна дополнительная информация.

Кроме того, я использую Visual Studio 2008 для компиляции исходных файлов, и поставляемые проекты конвертируются без проблем.

Ответы [ 3 ]

2 голосов
/ 05 декабря 2009

Я только смог преодолеть это и смог успешно скомпилировать MagickNET с последней версией ImageMagick. Я должен был сделать несколько вещей.

  1. Настроен ImageMagick для использования StaticMTDll.
  2. Отредактирован magick-config.h для отмены поддержки X11.
  3. Удален проект CORE_xlib из решения ImageMagick.
  4. Очистка / Перестройка ImageMagick
  5. Добавлены следующие файлы lib в настройки компоновщика для MagickNet

    CORE_DB_bzlib_.lib
    CORE_DB_coders_.lib
    CORE_DB_jbig_.lib
    CORE_DB_jpeg_.lib
    CORE_DB_magick_.lib
    CORE_DB_png_.lib
    CORE_DB_tiff_.lib
    CORE_DB_ttf_.lib
    CORE_DB_wand_.lib
    CORE_DB_wmf_.lib
    CORE_DB_zlib_.lib
    CORE_DB_libxml_.lib
    CORE_DB_jp2_.lib
    CORE_DB_lcms_.lib
    Ws2_32.lib

  6. Встроенная сеть MagickNet

Мне пришлось вносить обновления в MagickNet, поскольку методы устарели с момента выпуска исходного кода на веб-сайте MagickNet. Я постараюсь разместить репозиторий в сети, чтобы поделиться всем решением.

1 голос
/ 06 сентября 2010

У меня была точно такая же проблема, и ответ Броманко решил ее ... с одним незначительным дополнением:

в файле imagemagick's magick-config.h, в дополнение к комментированию строки:

define MAGICKCORE_X11_DELEGATE

... нужно также закомментировать строку:

define ProvideDllMain

тогда вы будете готовить на газе.

Спасибо, броманко ...

0 голосов
/ 07 апреля 2009

Вы видите проблему с компоновщиком из-за (я предполагаю, и, похоже, это правда, основываясь на поиске в Google) порядка ссылок библиотек msvcrt и MFC. Эта статья о MSDN, кажется, имеет решение от, но основные проблемы те же, и поэтому параметры должны быть похожими.

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