このようなモジュールに関数があります(誰かが興味を持っている場合は、この関数です)
MODULE MYMODULE
IMPLICIT NONE
! Some random stuff
CONTAINS
CHARACTER*255 FUNCTION strtok ( source_string, delimiters )
[...]
END FUNCTION strtok
SUBROUTINE DO_SOMETHING ( )
CHARACTER(LEN=255) :: strtok
[...] !
END SUBROUTINE DO_SOMETHING
END MODULE MYMODULE
この関数は、C の文字列トークナイザーのバージョンであり、サブルーチンstrtok
からこの関数を使用します。DO_SOMETHING
を定義する必要があります。定義strtok
しないと、gfortran が定義されていないと文句を言います。ただし、コードをコンパイルしてメイン プログラムにリンクすると、リンカは への未定義の参照について不平を言いstrtok_
ます。両方とも同じモジュールにあり、表示されるはずなので、なぜそうなのかわかりません。同じモジュール内の他の関数とサブルーチンには、この問題はありません。これは、これが文字*を返す関数であるという事実と関係がありますか?