Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Передача параметров в 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-приложении...


Наверх

Титульная страница Поиск, карта сайта Написать письмо