Поиск:

Ответ в темуСоздание новой темы Создание опроса
> AC & DLL, AlphaControl + DLL 
V
    Опции темы
vikaz
Дата 18.6.2008, 07:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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?


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
mrbrooks
Дата 18.6.2008, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



хм. и что сам скин ты тоже хочешь в dll запихать? на мой взгляд это не эффективно.
PM MAIL   Вверх
vikaz
Дата 18.6.2008, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 10
Всего: 12



да просто писал прогу, она использует скин, но некоторые вещи хоттел вынести во внешний модуль. Сам скин я не хотел размещать, это для примера, я в модуле хотел разместить только Provider, но прокатит ли это я незнаю.


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
mrbrooks
Дата 18.6.2008, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Честно говоря а есть ли в этом смысл - пихать в dll компонент. Другое дело - заковыристая функция которая может использоваться в различных проектах или наоборот модифицироваться.  smile 
PM MAIL   Вверх
vikaz
Дата 18.6.2008, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 10
Всего: 12



Понимаю куда ты клонишь. Но в проге есть много мелких форм, которые просто загружают основной модуль, вот и было принято решение вынести их. Может не очень красивое и правильное использование DLL, но это поддерживается, так почему бы не воспользоваться этим.  smile  Тем более, что и функционал в этих модулях я смогу менять не перекомпилируя весь проект!  smile 


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
mrbrooks
Дата 18.6.2008, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Хотел посоветовать обартиться к разрабам  smile  а ты уже и там запостился  smile 

По теме - такое ощющение что библиотека не видит подключаемого хидара. Сейчас у себя попробую.
PM MAIL   Вверх
vikaz
Дата 18.6.2008, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 10
Всего: 12



да, там уже 3 день все молчат. С самого начала у меня просто не видел hpp файлы, я в опция компилятора, указал директорию, где лежит АС. Пока я не создаю TsSkinManager * Skin1 = new TsSkinManager (Form_1); все компилится нормаьно, как ставлю эту строчку, появляются ошибки!


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
mrbrooks
Дата 18.6.2008, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



У меня все скомпилилось. Скорее всего как я и предпологал дело в том что компилер не видет хидары или библиотеки.  Проверь что ссылка на них есть в Project ->Options->Directories и Tools->Environment Options

Это сообщение отредактировал(а) mrbrooks - 18.6.2008, 09:54
PM MAIL   Вверх
vikaz
Дата 18.6.2008, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 10
Всего: 12



хм, вроде проверял, ладно еще раз гляну вечером. СПС!

Еще вопрос. Если на форме будет лежать SkinManager,  а  в DLL только provider. Скин налезет на форму, которая создается динамически в DLL?

Это сообщение отредактировал(а) vikaz - 18.6.2008, 10:01


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
mrbrooks
Дата 18.6.2008, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Проверь. Просто указанная тобою ошибка именно об этом и грит.
PM MAIL   Вверх
vikaz
Дата 19.6.2008, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 10
Всего: 12



Проверил я все пути, не компилится :( mrbrooks, а с чего ты решил что ошибка 
Код

[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


говорит о том, что неверно прописаны пути? По кнопке F1 совсем другое пишет. Я конечно не ас в английском, но как-то я не увидел там строчки про пути.  smile 


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
mrbrooks
Дата 19.6.2008, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Гы. Компилер пишет что не может обнаружить внешнее подключение имеющееся в объектном файле. Посмотри схему подготовки исполняемой программы. Это есть во всех нормальных учебниках по С++. После *.OBJ файла компановщик подключает вызываемые библиотеки и получается уже exe-шник. 

Повторяюсь. У меня все отлично компилится. 
PM MAIL   Вверх
vikaz
Дата 19.6.2008, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 10
Всего: 12



мда. Чтож у меня не хочет...... старанности какие-то. Поделись проектом, я гляну, может найду ошибку со своей стороны.



--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
vikaz
Дата 23.6.2008, 07:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 869
Регистрация: 15.2.2006

Репутация: 10
Всего: 12



Проблема решилась. Надо было просто дописать строку #pragma link "sSkinManager"
Всем спасибо!


--------------------
user posted image

Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ 
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0570 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.