Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.23;
Скачать: CL | DM;

Вниз

Передача параметров в dll   Найти похожие ветки 

 
makey22   (2005-01-13 08:51) [0]

господа програмеры столкнулся с интересным, на мой взгляд явлением. Создана dll которая принимает 3 параметра par1,par2,par3:real; когда вызываешь ее из программы пеарметры приходится передавать в последовательности par3,par2,par1.
Если ставишь нормально не работае. Кто нибудь может объяснить как от этого избавиться и откуда это берется?


 
Skier ©   (2005-01-13 08:58) [1]


> Кто нибудь может объяснить как от этого избавиться

нужно выставить одно и тоже соглашение о передаче параметров в объявлении функции в DLL и в объявлении функции
в Host-приложении...


 
makey22   (2005-01-13 09:42) [2]

В том то и ворпрос, сто все выставлено одинаково


 
Skier ©   (2005-01-13 09:43) [3]

код в студию !


 
Kerk ©   (2005-01-13 09:43) [4]

makey22   (13.01.05 9:42) [2]
значит не одинаково. calling convention проверь.


 
makey22   (2005-01-13 10:54) [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;

а так я ее вызываю
LibHandl:=LoadLibrary("pfrdan.dll");
@pfr:=GetProcAddress(LibHandl,"pfr");
pfr(,1,predpkod,Kod);

подскажите, что я делаю не правельно


 
KSergey ©   (2005-01-13 10:55) [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;

А говоришь - одинаково...


 
makey22   (2005-01-13 11:15) [7]

да, но другая функция при таком оформлении работает нормально
По поводу описаний: я так делал всегда и вроде работало. Первый раз стаким столкнулся. Подскажи как лучше сделать?


 
Alexander Panov ©   (2005-01-13 11:28) [8]

makey22   (13.01.05 11:15) [7]
Тебе уже ответитли в [1]


 
Ega23 ©   (2005-01-13 11:37) [9]

По поводу описаний: я так делал всегда и вроде работало. Первый раз стаким столкнулся. Подскажи как лучше сделать?

Скорее всего, до этого у тебя была функция без параметров, или с одним параметром. Соглашения о вызове должны быть одинаковыми и в DLL и в приложении. Если в DLL StdCall, то и в Application - StdCall. Если в DLL CDecl, то и в Application - CDecl.


 
Anatoly Podgoretsky ©   (2005-01-13 12:08) [10]

makey22   (13.01.05 09:42) [2]
В том то и ворпрос, сто все выставлено одинаково

Больше так не отвечай, будут сильно бить.



Страницы: 1 вся ветка

Текущий архив: 2005.01.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.056 c
3-1103456531
Nata
2004-12-19 14:42
2005.01.23
добавить запись


1-1105435193
k@rt
2005-01-11 12:19
2005.01.23
Ассоциация файлов с Delphi


3-1103227504
Frozzen
2004-12-16 23:05
2005.01.23
работа с dbf через Tdbf


14-1104576205
Alex_S
2005-01-01 13:43
2005.01.23
Чудеса с Лексиконом. (История прошлого века)


3-1103292908
able
2004-12-17 17:15
2005.01.23
Два поля с разных баз