Как мне подключить DLL написанную на Bulder-e в Delphi? У меня есть вся необходимая информация (даже исходный код).
С уважением Руслан.
Пусть функция в Билдере была задана как
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
Здравствуйте, CH3COOH, Вы писали:
CHC>Всё проще:
Да нет, не проще: я же написал, кажется, что, возможно, можно прямо в Билдере выставить все как надо. Просто я по Билдеру, прямо скажем, не спец
Slicer