![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача параметров в dll [D6, WinXP]
makey22 © (2005-01-13 08:51:00)господа програмеры столкнулся с интересным, на мой взгляд явлением. Создана dll которая принимает 3 параметра par1,par2,par3:real; когда вызываешь ее из программы пеарметры приходится передавать в последовательности par3,par2,par1.
Если ставишь нормально не работае. Кто нибудь может объяснить как от этого избавиться и откуда это берется?
Anatoly Podgoretsky (2005-01-13 12:08:00) [1]makey22 (13.01.05 09:42) [2]
В том то и ворпрос, сто все выставлено одинаково
Больше так не отвечай, будут сильно бить.
Ega23 (2005-01-13 11:37:00) [2]По поводу описаний: я так делал всегда и вроде работало. Первый раз стаким столкнулся. Подскажи как лучше сделать?
Скорее всего, до этого у тебя была функция без параметров, или с одним параметром. Соглашения о вызове должны быть одинаковыми и в DLL и в приложении. Если в DLL StdCall, то и в Application - StdCall. Если в DLL CDecl, то и в Application - CDecl.
Alexander Panov (2005-01-13 11:28:00) [3]makey22 (13.01.05 11:15) [7]
Тебе уже ответитли в [1]
makey22 (2005-01-13 11:15:00) [4]да, но другая функция при таком оформлении работает нормально
По поводу описаний: я так делал всегда и вроде работало. Первый раз стаким столкнулся. Подскажи как лучше сделать?
KSergey (2005-01-13 10:55:00) [5]
> Так функция описана в dll
> function pfr(kod:real;kodpredp:real;new:real;god:real):Boolean;export;
>
> так в вызывающей программе
> TPFR = Function(kod:real;kodpredp:real;new:real;god: real):
> Boolean; StdCall;
А говоришь - одинаково...
makey22 (2005-01-13 10:54:00) [6]Так функция описана в dll
function pfr(kod:real;kodpredp:real;new:real;god:real):Boolean;export;
так в вызывающей программе
TPFR = Function(kod:real;kodpredp:real;new:real;god: real): Boolean; StdCall;
а так я ее вызываю
LibHandl:=LoadLibrary('pfrdan.dll');
@pfr:=GetProcAddress(LibHandl,'pfr');
pfr(,1,predpkod,Kod);
подскажите, что я делаю не правельно
Skier (2005-01-13 09:43:00) [7]код в студию !
Kerk (2005-01-13 09:43:00) [8]makey22 (13.01.05 9:42) [2]
значит не одинаково. calling convention проверь.
makey22 (2005-01-13 09:42:00) [9]В том то и ворпрос, сто все выставлено одинаково
Skier (2005-01-13 08:58:00) [10]
> Кто нибудь может объяснить как от этого избавиться
нужно выставить одно и тоже соглашение о передаче параметров в объявлении функции в DLL и в объявлении функции
в Host-приложении...