下記のstl_reshape.f90, calc_deformation.f90を用いたmain.f90を
gfortran calc_deformation.f90 stl_reshape.f90 main.f90 -o main.exec
とgfortranでコンパイルすると
Undefined symbols for architecture x86_64:
"calcdeform", referenced from:
___stl_reshape_MOD_calcstl in ccfyAJdE.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
というようなエラーが出ます。
-cオプションでコンパイルのみ行うときはエラーが出ないので、リンク時にエラーが出ているのだと思うのですが、
エラーをなくすにはどうしたら良いでしょうか?
エラーが出るのは関数だけで、subroutineの方は問題ないようです。
------------------------------- main.f90 -------------------------------------
program main
use stl_reshape
implicit none
...
call calcSTL
end program main
--------------------------------- stl_reshape.f90 ------------------------------
module stl_reshape
use calc_deformation
implicit none
private
public :: calcSTL
contains
...
subroutine calcSTL
double precision calcDeform
...
do i=1,num_vertex vertex_arr(1,3,i) = calcDeform(vertex_arr(1,2,i)) vertex_arr(2,3,i) = calcDeform(vertex_arr(2,2,i)) vertex_arr(3,3,i) = calcDeform(vertex_arr(3,2,i)) enddo ...
end subroutine calcSTL
end module stl_reshape
--------------------------------- calc_deformation.f90 --------------------------
module calc_deformation
implicit none
private
public :: calcDeform
contains
function calcDeform(y)
double precision, intent(in) :: y
double precision calcDeform
calcDeform = y**2
end function calcDeform
end module calc_deformation
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/29 07:11