![]() |
|
|
![]()
|
|
| vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Всем добрый день!
Ребята подскажите, не получается поместить компоненту в DLL. Код: Menu.h #include <vcl.h> #include <windows.h> #include <string.h> #include "sSkinManager.hpp" #ifndef _UMYDLL_H #define _UMYDLL_H #ifdef __DLL__ # define DLL_EI __declspec(dllexport) #else # define DLL_EI __declspec(dllimport) #endif //--------------------------------------------------------------------------- extern "C" void DLL_EI Menu (TForm * Form); #endif menu.cpp #include "dll.h" #pragma hdrstop #pragma argsused int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved) { return 1; } //--------------------------------------------------------------------------- void Menu (TForm * Form) { TForm * Form_1 = new TForm (Application); TsSkinManager * Skin1 = new TsSkinManager (Form_1); TLabel * Label1 = new TLabel (Form_1); Label1->Caption = "Menu"; Label1->Left = 10; Label1->Top = 10; Label1->Parent = Form_1; Form_1->Show(); } //--------------------------------------------------------------------------- При компилировании появляется след. ошибка: [Linker Error] Unresolved external 'Sskinmanager::TsSkinManager::' referenced from C:\TEMP\DLL\UNIT_DLL.OBJ [Linker Error] Unresolved external '__fastcall Sskinmanager::TsSkinManager::TsSkinManager(Classes::TComponent *)' referenced from C:\TEMP\DLL\UNIT_DLL.OBJ Помогите пожалуйста разобраться. Заранее спасибо. P.S. При работе с vcl приложеним, размещаем только один sSkinManager,так как больше и не нужно. При работе с копонентой внутри DLL, нужно вообще размещать sSkinManager? Смогут ли компоненты типа sButton и т.д. и т.п. подключиться к sSkinManager которое находится в приложении, которое вызывает эту DLL? -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
хм. и что сам скин ты тоже хочешь в dll запихать? на мой взгляд это не эффективно.
|
|||
|
||||
| vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
да просто писал прогу, она использует скин, но некоторые вещи хоттел вынести во внешний модуль. Сам скин я не хотел размещать, это для примера, я в модуле хотел разместить только Provider, но прокатит ли это я незнаю.
-------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Честно говоря а есть ли в этом смысл - пихать в dll компонент. Другое дело - заковыристая функция которая может использоваться в различных проектах или наоборот модифицироваться.
|
|||
|
||||
| vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Понимаю куда ты клонишь. Но в проге есть много мелких форм, которые просто загружают основной модуль, вот и было принято решение вынести их. Может не очень красивое и правильное использование DLL, но это поддерживается, так почему бы не воспользоваться этим.
-------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Хотел посоветовать обартиться к разрабам
По теме - такое ощющение что библиотека не видит подключаемого хидара. Сейчас у себя попробую. |
|||
|
||||
| vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
да, там уже 3 день все молчат. С самого начала у меня просто не видел hpp файлы, я в опция компилятора, указал директорию, где лежит АС. Пока я не создаю TsSkinManager * Skin1 = new TsSkinManager (Form_1); все компилится нормаьно, как ставлю эту строчку, появляются ошибки!
-------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
У меня все скомпилилось. Скорее всего как я и предпологал дело в том что компилер не видет хидары или библиотеки. Проверь что ссылка на них есть в Project ->Options->Directories и Tools->Environment Options
Это сообщение отредактировал(а) mrbrooks - 18.6.2008, 09:54 |
|||
|
||||
| vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
хм, вроде проверял, ладно еще раз гляну вечером. СПС!
Еще вопрос. Если на форме будет лежать SkinManager, а в DLL только provider. Скин налезет на форму, которая создается динамически в DLL? Это сообщение отредактировал(а) vikaz - 18.6.2008, 10:01 -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Проверь. Просто указанная тобою ошибка именно об этом и грит.
|
|||
|
||||
| vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Проверил я все пути, не компилится :( mrbrooks, а с чего ты решил что ошибка
говорит о том, что неверно прописаны пути? По кнопке F1 совсем другое пишет. Я конечно не ас в английском, но как-то я не увидел там строчки про пути. -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Гы. Компилер пишет что не может обнаружить внешнее подключение имеющееся в объектном файле. Посмотри схему подготовки исполняемой программы. Это есть во всех нормальных учебниках по С++. После *.OBJ файла компановщик подключает вызываемые библиотеки и получается уже exe-шник.
Повторяюсь. У меня все отлично компилится. |
|||
|
||||
| vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
мда. Чтож у меня не хочет...... старанности какие-то. Поделись проектом, я гляну, может найду ошибку со своей стороны.
-------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
| vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Проблема решилась. Надо было просто дописать строку #pragma link "sSkinManager"
Всем спасибо! -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |