DLL из Builder-a в Delphi
От: Аноним  
Дата: 31.03.03 10:06
Оценка:
Как мне подключить DLL написанную на Bulder-e в Delphi? У меня есть вся необходимая информация (даже исходный код).
С уважением Руслан.
Re: DLL из Builder-a в Delphi
От: Slicer [Wirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 31.03.03 11:23
Оценка:
Пусть функция в Билдере была задана как
int MyFunc(char* FileName);

Тогда в дельфи ее можно цепануть так:
function MyFunc(FileName:pchar):integer; external 'MyDll.DLL';

Теперь — еще две фишки.
1) Надо знать, под каким именем ее Билдер отэкспортировал. То есть если такой вариант, как я написал, не прокатит (типа не могу DLL найти или функцию в ней, blah, blah..), то пускаем tdump MyDLL.DLL и ищем в выводе слово Section, после которого идет Exports. И видим имя. Если оно не просто MyFunc, придется писать так:
function MyFunc(FileName:pchar):integer; external 'MyDll.DLL' name 'имя_под_которым_экспортируется';
Ну, как вариант, можно в Билдере ее скомпилить так, чтобы ф-ции экспортировались под своими именами.

2)Надо знать конвенцию вызова. Для Билдера по умолчанию, вроде, cdecl.
Тогда в дельфях надо дописать еще cdecl:
function .... external .....; cdecl;
Другие конвенции в дельфях выглядят так: stdcall, register(вместо fastcall), ну и вроде обычно больше ничего не бывает. Ну, safecall еще. А Pascal в си все равно никто не юзает

Надеюсь, ничего не забыл...

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Re: DLL из Builder-a в Delphi
От: CH3COOH Россия http://progrex.narod.ru
Дата: 31.03.03 11:51
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как мне подключить DLL написанную на Bulder-e в Delphi? У меня есть вся необходимая информация (даже исходный код).

А>С уважением Руслан.


Всё проще:
1. компилим dll в билдере
2. с помощью impdef получаем def файл
3. включаем его в проект dll
4. пишем альтернативные имена для каждой экспортируемой ф-и, напр.:

MODULE MYLIB.DLL
EXPORTS
@Funct1$qqfp ; -- было
@Funct1$qqfp = Funct1 ; -- добавили

5. компилим dll.

При этом можно будет использовать импорт по именам из Delphi программы безо всяких наворотов
// <...> — Здесь мог быть ваш код...
Re[2]: DLL из Builder-a в Delphi
От: Аноним  
Дата: 31.03.03 12:36
Оценка:
Здравствуйте, CH3COOH, Вы писали:

CHC>4. пишем альтернативные имена для каждой экспортируемой ф-и, напр.:


CHC>MODULE MYLIB.DLL

CHC>EXPORTS
CHC>@Funct1$qqfp ; -- было
CHC>@Funct1$qqfp = Funct1 ; -- добавили

CHC>5. компилим dll.


А можно поподробнее где это писать?
Re[2]: DLL из Builder-a в Delphi
От: Slicer [Wirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 31.03.03 12:42
Оценка:
Здравствуйте, CH3COOH, Вы писали:

CHC>Всё проще:


Да нет, не проще: я же написал, кажется, что, возможно, можно прямо в Билдере выставить все как надо. Просто я по Билдеру, прямо скажем, не спец

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Re[3]: DLL из Builder-a в Delphi
От: Slicer [Wirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 31.03.03 12:42
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А можно поподробнее где это писать?


Да в DEFе же.

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.