Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Linker Error при компиляции проекта

7.1K
26 февраля 2007 года
Dunkel
33 / / 16.11.2005
Ситуация такая: скачал небезызвестные компоненты TMS Component Pack (вот линк хтпп://rapidshare.de/files/35284852/TMS.Component.Pack.v4.0.Datecode.20060922.DelphiRetail-SKYDANCER.rar.html).
В Delphi 7 они у меня ставятся и без проблем работают. В C++ Builder 6 они ставятся, но при компиляции любого проекта с любой компонентой, которая, по-моему, использует GDI+, линкер выдает ошибки:
[Linker Error] Unresolved external 'GdiplusStartup' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\LIB\TMSC6.LIB|AdvGDIP.pas
[Linker Error] Unresolved external 'GdiplusShutdown' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\LIB\TMSC6.LIB|AdvGDIP.pas
[Linker Error] Unresolved external 'GdipDeleteGraphics' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\LIB\TMSC6.LIB|AdvGDIP.pas
[Linker Error] Unresolved external 'GdipCreateFromHDC' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\LIB\TMSC6.LIB|AdvGDIP.pas
...
и т.д.

В ридмишнике написано:
Note about GDI+
---------------
The TMS Component Pack requires GDI+ to be installed on the development system.
...
GDI+ is currently only required by following components:
TAdvToolBar, TAdOfficeHint, TAdvGlowButton,TAdvStringGrid,TAdvColumnGrid,TDBAdvGrid
Only when these components are used in your application, it might be necessary
to redistribute the GDI+ DLL with your application.


В XP уже есть GDI+, но я еще поставил Microsoft Platform SDK for Windows XP SP2, и DLL добавлял к проекту, нифига не пашет.
В чем прикол ?
19K
26 февраля 2007 года
Termi_uc
33 / / 13.02.2007
Посмотри где у тебя находится твои функции. Может быть, надо в Project->Edit Option Source в теге <LIBRARIES> прописать соответствующюю либу. Или подключить соответствующий пакет BPL в Options->Project->Packages->Runtime Packages (если используеш галочку Build whit run-time packages).

Ещё комписятор может не видеть BPL, где собственно всё и бывает описано. Пропеши в Path'ах полный путь к BPL'лям, LIB'ам и HPP.

Т.к. код времени разработки помещается в bpi, при работе в Builder'е ты не заметиш отсутствия нужного файла, а вот при сборке, когда компилятор ищет твои функции в пакетах времени выполнения, он их не находит.

Да, кстати, функции типа "GdipDeleteGraphics" - это скорее всего проспо оболочки GDI+ функций, и они описаны именно в пакетах компонентов TMS Component Pack.
7.1K
26 февраля 2007 года
Dunkel
33 / / 16.11.2005
Цитата: Termi_uc
Посмотри где у тебя находится твои функции. Может быть, надо в Project->Edit Option Source в теге <LIBRARIES> прописать соответствующюю либу. Или подключить соответствующий пакет BPL в Options->Project->Packages->Runtime Packages (если используеш галочку Build whit run-time packages).

Ещё комписятор может не видеть BPL, где собственно всё и бывает описано. Пропеши в Path'ах полный путь к BPL'лям, LIB'ам и HPP.

Т.к. код времени разработки помещается в bpi, при работе в Builder'е ты не заметиш отсутствия нужного файла, а вот при сборке, когда компилятор ищет твои функции в пакетах времени выполнения, он их не находит.

Да, кстати, функции типа "GdipDeleteGraphics" - это скорее всего проспо оболочки GDI+ функций, и они описаны именно в пакетах компонентов TMS Component Pack.



Все проблему решил:
1. либо добавляешь к проекту gdiplus.lib
2. либо вставляешь строку

 
Код:
#pragma comment(lib, "gdiplus.lib")
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог