Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 对与抽象接口匹配的模块子例程的未定义引用_Fortran_Gfortran - Fatal编程技术网

Fortran 对与抽象接口匹配的模块子例程的未定义引用

Fortran 对与抽象接口匹配的模块子例程的未定义引用,fortran,gfortran,Fortran,Gfortran,我试图创建一个模块,它的子例程使用另一个子例程的名称作为参数。以下是一个主程序(main.for): 下面是我的模块示例(操作模块): 我什么时候编译代码 gfortran -o main action_mod.for main.for 我犯了一个错误 /tmp/ccdSM11U.o: In function `__action_mod_MOD_main': action_mod.for:(.text+0x1a2): undefined reference to `sub1_' action_

我试图创建一个模块,它的子例程使用另一个子例程的名称作为参数。以下是一个主程序(main.for):

下面是我的模块示例(操作模块):

我什么时候编译代码

gfortran -o main action_mod.for main.for
我犯了一个错误

/tmp/ccdSM11U.o: In function `__action_mod_MOD_main':
action_mod.for:(.text+0x1a2): undefined reference to `sub1_'
action_mod.for:(.text+0x1b1): undefined reference to `sub2_'
collect2: error: ld returned 1 exit status
但是当我把子程序
sub1(I,o)
sub2(I,o)
放到main中时,一切正常。然而,这不是我想要的


你能帮我找到创建模块的正确方法吗?我的代码有什么问题?

您的问题与中的问题大致相同,因此请阅读此处的答案以了解更多详细信息。然而,这个案例有一些额外的复杂性,值得考虑

在子程序
main

   procedure(sub_interface) sub2,sub1
表示存在外部过程
sub2
sub1
。模块
action\u mod
的模块子例程
sub1
sub2
不是这些外部程序。就链接问题而言,这类似于声明
字符(255)strtok
“隐藏”模块函数
strtok

您应该从子例程中删除该语句


但您还有其他错误需要修复。模块子例程
sub1
sub2
与抽象接口
sub_接口
没有相同的接口。您需要确保
sub1
sub2
i
o
的伪参数的意图属性匹配,非常感谢您的帮助!你的评论解决了我的问题:)
/tmp/ccdSM11U.o: In function `__action_mod_MOD_main':
action_mod.for:(.text+0x1a2): undefined reference to `sub1_'
action_mod.for:(.text+0x1b1): undefined reference to `sub2_'
collect2: error: ld returned 1 exit status
   procedure(sub_interface) sub2,sub1