Главная страница
    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.065 c
14-1104810577
DelphiN!
2005-01-04 06:49
2005.01.23
Где скачать все выпуски RSDN Magazine ?


3-1103619169
Romano
2004-12-21 11:52
2005.01.23
Ошибка InterBase


1-1105011356
Viola
2005-01-06 14:35
2005.01.23
Получить текст от символа < до ... над котрым находиться курсор


3-1103223521
Fin
2004-12-16 21:58
2005.01.23
Не понял, на счет транзакций


11-1087105674
Genie
2004-06-13 09:47
2005.01.23
Работа с Internet





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский