Я привык использовать следующий синтаксисПочему мои Fortran функции экспортируются при использовании BIND (C, NAME = «имя») атрибут
subroutine CalcA(A,N)
!DEC$ ATTRIBUTES DLLEXPORT :: CALCA
!DEC$ ATTRIBUTES ALIAS:'CalcA' :: CalcA
IMPLICIT NONE
...
end subroutine CalcA
, которая производит экспортированной функции в .dll
Так что теперь я пытаюсь новый ISO_C_BINDING
со следующим кодом
subroutine CalcA(A,N) BIND(C, NAME="CalcA")
USE, INTRINSIC :: ISO_C_BINDING
IMPLICIT NONE
...
end subroutine CalcA
но функция экспорта не создается
Так что я здесь отсутствует? Как новый iso_c_binding
собирается заменить устаревшие объявления !DEC$ ATTRIBUTE DLLEXPORT
?
PS. Я на Intel Fortran XE 2013 на платформе Win7-64 через VS2010.
Я бы спросил у Форума поддержки Intel. –
Кто-то должен знать что-то здесь. Надеюсь. – ja72
ISO_C_BINDING просто не делает то, что вы надеетесь. Он добавляет несколько предопределенных констант и процедур, которые помогают вам взаимодействовать с C-кодом. Он * не * автоматически экспортирует функции, вы все равно должны использовать атрибут DLLEXPORT. –