![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Можно ли использовать .dll, созданные в C++ или вообще неизвестно где, при написании программы в Дельфи и наоборот. Будет ли доступна процедура помещенная в библиотеку создаваемую Дельфи при написании программы на других языках.
Реально столкнулся со следующей проблемой - просят написать простенькую программку, реализующую процедуру, чисто вычислительную. На входе несколько вещественных чисел - результат - код, размером в один байт. Ее будут использовать какие-то програмеры в своей большой проге. Как будет писаться прога - неизвестно. Варианты с обменом через память и похожие - не проходят, так как программеры недоступны и согласовать с ними ничего не получится. Можно ли как-нибудь автономно эту проблемку решить. |
#2
|
||||
|
||||
![]() Цитата:
TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |
#3
|
|||
|
|||
![]() Функции DLL , созданные в какой среде более универсальны, т.е. могут использоваться во всех языках, включая Маткад и пр. Или в Дельфи достаточно указать директиву стандартного вызова и остальное не брать в голову.
|
#4
|
||||
|
||||
![]() Цитата:
Вот так в DLL записывается внешние функции: Код:
... function Subtract(a,b: Integer): Integer; stdcall; begin Result := a - b; end; ... exports Subtract; ... А так читаются из DLL: Код:
... function Subtract(a,b: Integer): Integer; external 'mylib.dll'; ... Код:
... const mylib = 'mylib.dll'; ... var extfunc: function(a,b: Integer): Integer; external mylib; ... procedure TForm1.FormCreate(Sender: TObject); var lib: Cardinal; begin lib := LoadLibrary(mylib); try extfunc := GetProcAddress(lib,pchar('Subtract')); finally FreeLibrary(lib); end; end; ... TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |
#5
|
|||
|
|||
![]() Я в Дельфи могу и написать и использовать dll-ки. И это довольно просто для моего варианта. Я посмотрел как работают с dll в С++ и увидел, что там все гораздо сложнее и различается для разных версий языка (MS, Borland, Dev..). Мне надо сделать dll-ку с использованием такого варианта языка, чтобы ее можно было по возможности просто применять в разных вариантах программ.
|
#6
|
|||
|
|||
![]() Синтаксис импорта dll зависит от языка. А вот сама dll от языка не зависит. Не очень понятно написал...
Короче, если формат описания функции в dll соответсвует некоторому общепринятому формату, то не важно на каком языке написана сама dll и программа, ее использующая. Наиболее универсальное соглашение для Дельфей stdcall (аналог PASCAL в C/C++). |