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
Специалист — это варвар, невежество которого не всесторонне :)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.