Связать FreeImage как статическую библиотеку в VS2010?

Мне нужна библиотека изображений, и я смотрю в FreeImage, http://freeimage.sourceforge.net/.
Я хочу связать это статически с моим заявлением.

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

Тогда я попытался скачать их исходники, преобразовал их «FreeImageLib.2008» в VS2010 и собрал их. Сам по себе он прекрасно работает, но у меня все еще есть проблема с линковкой, мое приложение, которое использует его, все еще жалуется на ошибки компоновщика.

Я также настроил всю конфигурацию проекта так, чтобы она соответствовала другим моим проектам, чтобы не было конфликтов с / MDd или / MTd и т. Д.

Я немного покопался в их источнике, и есть макросы типа «FREEIMAGE_LIB», которые предполагают, что он должен быть определен при создании статической библиотеки, и он определен, но все же он не работает.

Я погуглил и не могу найти каких-либо убедительных ответов на этот вопрос. Ответ на Получение FreeImage для работы с Visual Studio 2010 не имеет значения; Я уже определил макрос либо до включения заголовка, либо в качестве аргумента препроцессора, но он не работает.

Разве эта библиотека не предназначена для использования в качестве статической библиотеки, или в чем может быть проблема?
Кто-нибудь смог статически связать FreeImage на VS2010 +?

Спасибо

8

Решение

Да, мне удалось статически связать FreeImage в нескольких версиях Visual Studio. Здесь я опишу, как я делаю это обычно.

С FreeImage по умолчанию у нас есть 8 вариантов, чтобы связать его с вашим приложением:

FreeImage — динамическая ссылка (вам понадобится dll).

FreeImageLib — статическая ссылка.

Каждый из них может быть построен с помощью «Debug» или «Release» конфигураций и для платформ Win32 или Win64.

Итак, предположим, что нам нужно (Static && Win32 && Debug) и (статический && Win32 && Release) варианты для нашего приложения. Также в нашем приложении мы используем Dynamic Runtime Library (по умолчанию FreeImage по какой-то причине настроен на статический)
Как мы обычно получаем это:

  • Скачайте и распакуйте свежую версию (или хотя бы очистите старый дистиб)

  • открыто FreeImage.2008.sln выберите ВСЕ из 10 проектов с помощью Shift + клик. Затем в «Свойствах проекта / C ++ / Генерация кода» мы выбираем / MDd для конфигурации «Debug» и / MD для «Release».

  • Затем мы переходим в «Меню / Сборка / Сборка», выбираем:

    FreeImageLib | Debug | Win32

    FreeImageLib | Release | Win32

и нажмите «Построить».

  • Подождите, пока выбранные конфигурации построены. Все, что нам нужно, будет скопировано в FreeImage\Dist папка

  • в FreeImage\Dist файлы проверки папок:
    delete.me
    FreeImage.h
    FreeImage.lib
    FreeImaged.lib
    Проверьте дату и время создания. Он должен быть свежим и горячим. Если нет, скопируйте их из FreeImage\Source\FreeImageLib\Debug а также FreeImage\Source\FreeImageLib\Release,

  • В основном приложении добавить, чтобы включить и lib FreeImage\Dist и ссылка FreeImaged.lib Отладить конфигурации и FreeImage.lib к релизам.
  • Включить в исходный файл:

    #define FREEIMAGE_LIB

    #include "FreeImage.h"

  • Попробуй позвонить
    FreeImage_Initialise();
    FreeImage_DeInitialise();

  • Он должен работать

Удачного кодирования!

11

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]