Я пытаюсь использовать FORtran подпрограмму модуля в C и не могу пройти, вот упрощенная версия моей проблемы:Как использовать FORtran подпрограмму модуля в с
У меня есть один FORtran модуля, который содержит подпрограмму , а вторая подпрограмма использует модуль.
!md.f90
module myadd
implicit none
contains
subroutine add1(a) bind(c)
implicit none
integer a
a=a+1
end subroutine add1
end module myadd
!sb.f90
subroutine sq(a) bind(c)
use myadd
implicit none
integer a
call add1(a)
a=a*a
end subroutine sq
Теперь я хочу, чтобы вызвать функцию sb
в C:
//main.cpp
extern "C"{ void sb(int * a); }
int main(){
int a=2;
sb(&a);
}
как я должен соединить их вместе?
Я пытался что-то вроде
ifort -c md.f90 sb.f90
icc sb.o main.cpp
но дает ошибку
sb.o: В функции
sq': sb.f90:(.text+0x6): undefined reference to
add1' /tmp/icc40D9n7.o: В функцииmain': main.cpp:(.text+0x2e): undefined reference to
сб»
Кто-нибудь знает, как решить проблему?
Возникает вопрос: http://stackoverflow.com/questions/15557439/how-to-call-a-fortran90-function-included-in-a-module-in-c-code – Jason