Cでfortranモジュールサブルーチンを使用しようとしていますが、うまくいきません。これは私の問題の簡略化されたバージョンです:
サブルーチンを含む 1 つの fortran モジュールがあり、2 番目のサブルーチンがそのモジュールを使用しています。
!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
sb'
問題を解決する方法を知っている人はいますか?