Как использовать / связать gdLibrary (libgd) с MS Visual C ++ (например, 2008 Express Edition)? Получение ошибок LNK2019 - PullRequest
0 голосов
/ 07 февраля 2010

Мне нужно использовать gdLibrary (http://www.libgd.org) в приложении C ++ на MS Windows XP Prof. SP3 32bit), и я пытаюсь и гуглю уже два дня безуспешно. Кто-нибудь из вас использует libgd с MS VC ++ 200x EE?

Моя проблема: Это должно для компиляции с MS Visual C ++ (например, 2008 Express Edition - исправлено условие третьей стороны) ... но в настоящее время компоновщик падает, с 11 из следующих LNK2019 ошибок:

Linking ... codereate.obj: ошибка LNK2019: в "public: virtual __thiscall CodeCreate :: ~ CodeCreate (void)"

был найден неопределенный внешний символ "_gdImageDestroy"

Другими символами являются _gdImageColorExact, _gdImageCopyResized и некоторые другие gd-функции. Кажется, что компоновщик VC ++ не работает правильно с bgd.lib, предоставленным пакетом, который я скачал с http://www.libgd.org/releases/gd-latest-win32.zip.

Что я сделал / попробовал:

  1. Извлечено gd-latest-win32.zip до c:\users\johndoe\cpp\libgd.
  2. Определено c:\users\johndoe\cpp\libgd\lib als дополнительная библиотека dir (глобальная настройка VC ++)
  3. Определяется c:\users\johndoe\cpp\libgd\include в качестве дополнительного включает dir (глобальная настройка VC ++)
  4. Определяется c:\users\johndoe\cpp\libgd\include\lib\bgd.lib как дополнительный компоновщик \ входная зависимость (настройка проекта)
  5. Я даже добавил #pragma comment(lib, "libgd.lib") в свой codecreate.h, чтобы быть на стороне сохранения.

Есть предложения? Что я делаю неправильно (например, я забыл что-то установить)? Есть ли какая-нибудь хитрость, чтобы получить VC ++ 2008-совместимый bgd.lib?

Дополнительные примечания:

  1. Работает на Linux / g ++, все работает нормально, без предупреждений с -pedantic -ansi -wAll. Программа выполняет свою работу и генерирует несколько штрих-кодов.
  2. Это работает при использовании DevC ++ для Win32. Следовательно, это не проблема Windows, а "проблема" VC ++. Для DevC ++ я сделал:
    • Я только что скачал http://www.libgd.org/releases/gd-latest-win32.zip,
    • извлек это до c:\users\johndoe\cpp\libgd
    • добавлено c:\users\johndoe\cpp\libgd\lib\bgd.lib в качестве дополнительного объекта в настройках проектов линкера.
    • определено c:\users\johndoe\cpp\libgd\lib также дополнительная библиотека dir,
    • определено c:\users\johndoe\cpp\libgd\include в качестве дополнительного включает dir
    • доволен некоторыми штрих-кодами
  3. Если я не могу заставить Это работать, я действительно в беде ... становлюсь действительно отчаянным прямо сейчас: - (

Ответы [ 2 ]

0 голосов
/ 07 февраля 2010

Убедитесь, что вы определили макрос препроцессора BGDWIN32, как того требует libgd для компиляции кода клиента с помощью Visual C ++.

Перейти к свойствам проекта, затем C / C ++ -> Препроцессор -> Определения препроцессора

и добавьте BGDWIN32

0 голосов
/ 07 февраля 2010

Вы поместили определение NODLL в свой проект? Если вы сделали это, вы должны использовать взамен bgd_a.lib. И вам также нужно убедиться, что вы определили WIN32 .

Я попытался создать простой проект с последним выпуском, и он увенчался успехом. Если я добавлю NODLL без изменения tot bgd_a, то получу то же сообщение об ошибке.

...