akaGM
Platinum Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору ESV1987 Цитата: .. до поры до времени... не хватает строки !DEC$ ATTRIBUTES REFERENCE :: b которая гласит, что массив надо передавать по ссылке _жёстко_ её писать надо, иначе ты полагаешься на дефолтные установки, что не есть гуд равно как и дельфийскую procedure MeanVal([var] b:TDATA; n:integer; var s:double) и ещё... в Код: subroutine meanval(b,n,summ) implicit none !DEC$ ATTRIBUTES STDCALL, DLLEXPORT :: meanval !DEC$ ATTRIBUTES ALIAS : "_meanval" :: meanval !DEC$ ATTRIBUTES REFERENCE :: summ | необязательно, но _крайне желательно_ писать ещё строку !DEC$ ATTRIBUTES VALUE :: n Цитата: А intent значит для других случаев используется? | да нет, как раз для этих, только попробуй написать: real(8), intent(out) :: summ !!!DEC$ ATTRIBUTES REFERENCE :: summ без последней директивной строчки при соглашении stdcall -- у тебя просто компилироваться не будет ничего... intent() -- языковое средство, стандарт языка, поэтому более универсальное, только советую здесь полагаться на конкретную реализацию (в данном случае !DEC$) т.к., если уж речь идёт о длл, то это -- винда и межплатформой не пахнет... Цитата: Далее наверное надо будет попробовать что-то с динамическими массивами попередавать? | а что здесь особенного, теже ссылки, только вид сбоку, ну давай пробуй... procedure arrayOfdoubles(N, x) --- кстати, обрати внимание на здешнюю общепринятую манеру общения/обращения, не надо говорить в пустоту... ты здесь не один (центр форума), и все общаются не только с тобой единственным... | Всего записей: 25203 | Зарегистр. 06-12-2002 | Отправлено: 13:06 17-02-2011 | Исправлено: akaGM, 13:18 17-02-2011 |
|