~小孩er 发表于 2023-5-15 15:26:39

怎么在同一个流程中的两个不同模块中分别链接不同的fortran子程序?

求助大佬:

      在一个鼓泡流化床模拟流程中建立了两个RCSTR模块,这两个模块都需要链接外部子程序,将两个子程序都生成 .DLL文件之后打开流程,在run setting 中的linker option中只能链接一个 .DLL文件,总是显示有个一程序丢失。再此寻求大佬帮助!

liu_jia_tao 发表于 2023-5-15 15:26:39

如下图:

~小孩er 发表于 2023-5-15 15:26:39

liu_jia_tao 发表于 2023-5-15 15:50
如下图:

感谢前辈给我的回复
我将所有的 .f文件先转成obj格式,然后分别建立opt文件,再转换为.dll文件,之后把所有的.DLL文件的地址目录放在同一个txt文本文件中,然后将其转换为.opt文件,再连接到aspen plus中。但是我这样做之后还是出现了文件丢失问题,是不是我的步骤出现了什么问题,请前辈指点一下
报错:
->Processing input specifications ...

*** SEVERE ERROR
      COULD NOT RESOLVE USER OR IN-LINE FORTRAN SUBROUTINE(S):

      SUBROUTINE "KINETIC" IS MISSING

*** SEVERE ERROR
      PROGRAM TERMINATED DUE TO UNRESOLVED ROUTINES

! Errors while processing input specifications

~小孩er 发表于 2023-5-15 15:26:39

liu_jia_tao 发表于 2023-5-15 15:50
如下图:

如果可以的话能不能加前辈一个微信,我的微信号为:xqkuner

zxz2004 发表于 2023-5-15 15:26:39

学习学习,谢谢分享

liu_jia_tao 发表于 2023-5-15 15:26:39

~小孩er 发表于 2023-5-15 20:15
感谢前辈给我的回复
我将所有的 .f文件先转成obj格式,然后分别建立opt文件,再转换为.dll文件,之后把 ...

或者你可以这样:第一步和你现在做的一样把所有.f编译成.obj;第二步稍微做些改变,使用命令:asplink *.obj KINETIC,这样所有的.obj都会链接到KINETIC.dll中,这样只需要在.opt文件中写入“KINETIC.dll”即可。
SUBROUTINE "KINETIC" IS MISSING这个报错有可能是另一个问题:你输入到Aspen Plus动力学页面中的子程序名称不是.f文件中的函数名,而是dll、obj、f这类文件名。Aspen Plus动力学页面中的子程序名称需要是.f文件SUBROUTINE后面的函数名。例如,SUBROUTINE USRKIN (SOUT,   NSUBS, 就要写USRKIN

~小孩er 发表于 2023-5-15 15:26:39

liu_jia_tao 发表于 2023-5-16 13:10
或者你可以这样:第一步和你现在做的一样把所有.f编译成.obj;第二步稍微做些改变,使用命令:asplink *.o ...

感谢,问题是出现在了.f文件的名称上面。
后面做了其他链接方法的尝试,您说的这两种方法都可以。另外,将两个.f文件分别生成.obj文件,再分别使用asplink分别生成其.dll文件,然后直接打开aspen plus不用使用linker option链接也能直接运行,经过对比,运行结果是一样的。
页: [1]
查看完整版本: 怎么在同一个流程中的两个不同模块中分别链接不同的fortran子程序?