Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.031 c
14-1105005251
Uncle Archi
2005-01-06 12:54
2005.01.23
Что за зверь такой ASUS AGP-V274DTV


14-1104981216
User_32
2005-01-06 06:13
2005.01.23
Делаю веб сервер, хочу что бы была поддержка php


14-1104716032
Marat_Ch
2005-01-03 04:33
2005.01.23
к561


14-1104780262
Zacho
2005-01-03 22:24
2005.01.23
Мистика, ужасы и т.п.


4-1101736313
Dema-X
2004-11-29 16:51
2005.01.23
как по handle определить, какому приложению принадлежит окно




   Наверх