Мне нужна библиотека изображений, и я смотрю в FreeImage, http://freeimage.sourceforge.net/.
Я хочу связать это статически с моим заявлением.
Я попытался загрузить двоичные файлы и связать их с, но я получаю ошибки компоновщика 2019 года, когда я пытаюсь вызвать их функции, даже если я уверен, что связал это правильно.
Тогда я попытался скачать их исходники, преобразовал их «FreeImageLib.2008» в VS2010 и собрал их. Сам по себе он прекрасно работает, но у меня все еще есть проблема с линковкой, мое приложение, которое использует его, все еще жалуется на ошибки компоновщика.
Я также настроил всю конфигурацию проекта так, чтобы она соответствовала другим моим проектам, чтобы не было конфликтов с / MDd или / MTd и т. Д.
Я немного покопался в их источнике, и есть макросы типа «FREEIMAGE_LIB», которые предполагают, что он должен быть определен при создании статической библиотеки, и он определен, но все же он не работает.
Я погуглил и не могу найти каких-либо убедительных ответов на этот вопрос. Ответ на Получение FreeImage для работы с Visual Studio 2010 не имеет значения; Я уже определил макрос либо до включения заголовка, либо в качестве аргумента препроцессора, но он не работает.
Разве эта библиотека не предназначена для использования в качестве статической библиотеки, или в чем может быть проблема?
Кто-нибудь смог статически связать FreeImage на VS2010 +?
Спасибо
Да, мне удалось статически связать 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
,
FreeImage\Dist
и ссылка FreeImaged.lib
Отладить конфигурации и FreeImage.lib
к релизам.Включить в исходный файл:
#define FREEIMAGE_LIB
#include "FreeImage.h"
Попробуй позвонить
FreeImage_Initialise();
FreeImage_DeInitialise();
Он должен работать
Удачного кодирования!
Других решений пока нет …