akaGM
Platinum Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору костыли до "С_биндных_времён" :) при условии 32-битной адресации в длл, иначе integer*4 надо заменить на integer*8, интерфейс переписывается вот так Код: abstract interface double precision function iwspVUSHCVWDERPTPT(p, t, & & v, u, s, h, Cv, w, & & DVDPt, DUDPt, DSDPt, DHDPt, DVDTp, DUDPTp, DSDPTp, DHDTp) bind(c) !gcc$ attributes stdcall :: iwspVUSHCVWDERPTP real*8, intent(in) :: p real*8, intent(in) :: t integer*4, value :: v integer*4, value :: u integer*4, value :: s integer*4, value :: h integer*4, value :: Cv integer*4, value :: w integer*4, value :: DVDPt integer*4, value :: DUDPt integer*4, value :: DSDPt integer*4, value :: DHDPt integer*4, value :: DVDTp integer*4, value :: DUDPTp integer*4, value :: DSDPTp integer*4, value :: DHDTp end function iwspVUSHCVWDERPTPT end interface вызов: ret1=wspVUSHCVWDERPTPT(p, t, LOC(v), LOC(u), LOC(s), LOC(h), LOC(Cv), LOC(w), & & LOC(DVDPt),LOC(DUDPt),LOC(DSDPt),LOC(DHDPt),LOC(DVDTp), & & LOC(DUDPTp),LOC(DSDPTp),LOC(DHDTp)) | Добавлено: кстати, проверь свою любимую double precision, сколько она байт размером, а то оно может и не совпадать с библиотекой или с real*8 :) Добавлено: а ещё у тебя несоответствие имён -- не работает копи/пасти? :) abstract interface double precision function iwspVUSHCVWDERPTPT(p, t, & !gcc$ attributes stdcall :: iwspVUSHCVWDERPTP ... end function iwspVUSHCVWDERPTPT |