Основы Fortran Часть 3 Фирсин Антон Александрович
Создание библиотеки на фортране Параметр линковщика GFortran: -shared Intel: /DLL
Создание библиотеки на фортране Настройка проекта в Eclipse
Создание библиотеки на фортране Настройка проекта в MS VS 2010
Экспорт подпрограмм Компилятор Intel Subroutine External. Method 1() Implicit None !DEC$ ATTRIBUTES DLLEXPORT, C, DECORATE : : External. Method 1 !DEC$ ATTRIBUTES ALIAS: External. Method' : : External. Method 1 <Тело метода> End Subroutine External. Method 1
Экспорт подпрограмм Общий случай Module m 1 use ISO_C_BINDING Contains Subroutine External. Method 1() Bind(C, Name= ' External. Method') Implicit None !DEC$ ATTRIBUTES DLLEXPORT : : External. Method 1 <Тело метода> End Subroutine External. Method 1 End Module m 1
Экспорт подпрограмм Соглашение stdcall (Intel) Subroutine External. Method 1() Implicit None !DEC$ ATTRIBUTES DLLEXPORT, STDCALL, DECORATE : : External. Method 1 !DEC$ ATTRIBUTES ALIAS: External. Method' : : External. Method 1 <Тело метода> End Subroutine External. Method 1
Приведение параметров Приведение к указателям Fortran C_F_POINTER(CPTR, FPTR[, SHAPE]) Приведение C_LOC(X) к внешним указателям
Приведение параметров subroutine Get. Ver(ver_Ptr) BIND(C, Name='Get. Ver') !DEC$ ATTRIBUTES DLLEXPORT : : Get. Ver implicit none type(C_PTR), value integer(C_LONG), pointer : : ver_Ptr : : C_ver(: ) if(C_ASSOCIATED(ver_Ptr)) then call C_F_POINTER(ver_Ptr, C_ver, [2]) call Get_Ver(ver) End If end subroutine Get. Ver
Спасибо за внимание