Главная страница
    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.054 c
14-1104827977
peypivo
2005-01-04 11:39
2005.01.23
GPRS и компьютер


14-1104527215
Игорь Шевченко
2005-01-01 00:06
2005.01.23
Наталия, с днем рождения!


3-1103367985
Серый
2004-12-18 14:06
2005.01.23
Вычисляемое поле


9-1096951394
Colt1978
2004-10-05 08:43
2005.01.23
Правильное освещение (GLScene)


1-1105433785
DDDeN
2005-01-11 11:56
2005.01.23
Сортировка в StringGrid





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