Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2010, 15:29   #11
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

Цитата:
Сообщение от _-Re@l-_ Посмотреть сообщение
И вот вопрос: можно ли экспортировать классы в DLL?Т.е. вот так:
Код:
Exports
           MyClass; //или как нибудь ещё
Или нельзя?
Экспортировать можно функцию, которая создаёт и возвращает необходимый класс. Т.е. вот как-то так:
Код:
function CreateMyClass : TMyClass;
begin
  Result := TMyClass.Create;
end;

exporst
  CreateMyClass;
Единственное условие: TMyClass должен быть абстрактным и его определение должно быть доступно как для DLL (ну это само собой), так и для приложения, которое эту DLL использует. Таким образом, в CreateMyClass будет создаваться экземпляр не класса TMyClass, а какого-либо его наследника, который реализует его интерфейс.
maxionans вне форума Ответить с цитированием
Старый 17.11.2010, 15:56   #12
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

А можно и неабстрактный класс засунуть. Короче, гадать бесполезно, пока ТС не признается зачем это нужно

Код:
library DllWithClass;

type
  TMyClass = Class(TInterfacedObject, IMyClass)
    fData: widestring;
    constructor Create(data: widestring);
    destructor Destroy; override;
    function Hello: widestring;
    function Bye: widestring;
  end;
...
-----------------------------------------------------------------------------

Program TestApp;

{$APPTYPE CONSOLE}

type 
  IMyClass = Interface(IInterface)
    function Hello: widestring;
    function Bye: widestring;
  end;

function CreateMyClass(S: widestring): IMyClass; external 'DllWithClass.dll';

procedure Test;
var 
  MyClass: IMyClass;
begin
  MyClass := CreateMyClass('Medved');
  Writeln(MyClass.Hello);
  Writeln(MyClass.Bye);
end;

begin
  Test;
  Readln;
end.
Вложения
Тип файла: rar Interfaces.rar (19.8 Кб, 29 просмотров)
пыщь
JTG вне форума Ответить с цитированием
Старый 17.11.2010, 17:20   #13
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
function CreateMyClass : TMyClass;
begin
Result := TMyClass.Create;
end;
Ты, конечно, открыл мне Америку.
Цитата:
Короче, гадать бесполезно, пока ТС не признается зачем это нужно
Зачем мне нужно экспортировать классы из DLL?Просто я не люблю использовать модули.
_-Re@l-_ вне форума Ответить с цитированием
Старый 17.11.2010, 17:25   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Просто я не люблю использовать модули.
А в Делфи без модулей программы не бывает. Можно все писать в DPR, но ты представляешь чего тебе это стоит.
Между прочим модульность - хороший тон программирования.
Ничего страшного если каждый класс в разном модуле.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2010, 17:46   #15
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
Ничего страшного если каждый класс в разном модуле.
С этим я согласен, однако я в принципе не люблю модули. Мне нравятся DLL
_-Re@l-_ вне форума Ответить с цитированием
Старый 17.11.2010, 20:14   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Мне нравятся DLL
Мда... Я не люблю ездить на машине но мне нравится девченок катать на Lambo...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2010, 21:25   #17
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

Цитата:
Сообщение от _-Re@l-_ Посмотреть сообщение
Ты, конечно, открыл мне Америку.
то есть это по-твоему не экспортирование класса?
maxionans вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
экспорт в dll varelik Общие вопросы Delphi 3 13.01.2010 11:30
Создание классов и использование объектов классов при написании программ в среде C++. Frozen inside Помощь студентам 0 16.04.2009 23:18
Библиотека классов != обычная DLL ? darkstarx Общие вопросы .NET 3 14.04.2008 14:41
Использование C++ классов из native DLL в .NET C# lexluther Общие вопросы C/C++ 1 31.01.2007 22:00
экспорт классов из Dll Alar Общие вопросы Delphi 0 29.10.2006 21:53