2010-02-07 2 views
0

Я должен использовать gdLibrary (http://www.libgd.org) в приложении C++ для MS Windows XP Prof. SP3 32bit - и я пытаюсь и googleing в течение двух дней без успеха. Кто-нибудь из вас использует libgd с MS VC++ 200x EE?Как использовать/link gdLibrary (libgd) с MS Visual C++ (например, 2008 Express Edition)? Получение ошибок LNK2019

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

Связывание ... codereate.obj: ошибка LNK2019: не определено внешний символ "_gdImageDestroy" был найден в "общественности: виртуальный __thiscall CodeCreate :: ~ CodeCreate (аннулируются)"

Другие smybols - _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. Defined 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/г ++, все работает отлично, никаких предупреждений с -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 в качестве дополнительного obbject в настройках линкера-проектов.
    • определенные c:\users\johndoe\cpp\libgd\lib ALS дополнительная библиотека Дира
    • определенные c:\users\johndoe\cpp\libgd\include в качестве дополнительного включает реж
    • рад какой-то штрих-код вещи
  3. Если я не могу заставить его работать, я действительно в беде .. . становится действительно отчаянная прямо сейчас :-(

ответ

0

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

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

+0

слава богу, кто-то отвечает! :-) Im действительно новый для VC++ (из Linux) - я не думаю, что я ввел в него определение «NODLL» - где искать место? Тем не менее - я пробовал «bgd_a.lib» прямо сейчас ... но он, похоже, не работает, те же ошибки. Возможно, я ошибся во время создания проекта? Я только что создал новый пустой проект, добавил свои файлы * .cpp и * .h через «правый клик \ Добавить ...-> Существующий». Спасибо Спасибо спасибо! – Georg

+0

Щелкните правой кнопкой мыши проект и выберите «Свойства», затем проверьте C/C++ -> Препроцессор -> Определения препроцессора. Проекты по умолчанию должны содержать что-то вроде WIN32; _DEBUG в отладочных сборках. Я думаю, что, может быть, вы можете начать с того, чтобы свести к минимуму файлы, которые вы добавили, например простой main() только с gdImageDestroy (NULL), чтобы увидеть, работает ли это для соединения. – Francis

+0

О, вы создали из "Empty Project"? Тогда я думаю, вам нужно добавить определение WIN32! Я попытался удалить WIN32, а затем получить такое же сообщение об ошибке, как ваше. – Francis

0

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

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

и добавить BGDWIN32

Смежные вопросы