Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Вниз

Передача параметров в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.034 c
14-1105167737
Девушка
2005-01-08 10:02
2005.01.23
Вспоминая ветку про шлейфы на IXBT


3-1103520417
Рафик
2004-12-20 08:26
2005.01.23
Компонента с помощью котрой можно не использовать BDE


1-1105269948
glGLU
2005-01-09 14:25
2005.01.23
Как поделить float


10-1081225251
Djon1111
2004-04-06 08:20
2005.01.23
Изменение размеров страницы в Excell


6-1099474035
Prost0
2004-11-03 12:27
2005.01.23
Связать два компа по модемной лини и работать через сокет





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский