是否可以将模块保存为库,以避免其在每个程序代码中永久复制和过去

时间:2017-02-05 12:13:09

标签: module fortran

我编写了一个包含我需要的所有必要子程序和函数的模块。这个模块是一个普通模块,我想知道是否有任何方法可以避免永久使用模块的完整代码版本,而是将其称为Fortran库或内部保存的模块?

2 个答案:

答案 0 :(得分:1)

您可以通过以下方式使用该模块。如果你构建一个模块的代码,对于这个例子,该模块被称为capsule,并有一个名为sub的子程序,文件" capsule.mod"生成。您现在可以通过以下方式在另一个项目中使用此模块:

  1. 将capsule.mod添加到链接器应使用的文件列表中,或者如果使用ide,只需将文件复制到所有目标代码文件所在的文件夹中。
  2. 使用命令

    use capsule
    

    在子程序,函数或主程序中要使用模块的子程序。

  3. 调用子程序

    call sub()
    
  4. 你完成了重复使用你曾经构建的文件capsule.mod。

    编辑:我的意思是编译器,模块必须对编译器可见,而不是链接器。

答案 1 :(得分:1)

或者,您可能希望将通用例程编译为共享库或DLL。帖子Shared library in Fortran, minimal example does not work有一个gfortran和unix-y系统的最小例子; Windows上的英特尔Fortran示例位于https://software.intel.com/en-us/node/535308。我见过gfortran可以使用 compile 'com.github.paolorotolo:appintro:4.0.0' compile 'com.squareup.picasso:picasso:2.5.2' compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.android.support:design:23.4.0' compile 'com.google.android.gms:play-services-location:9.6.1' compile 'com.android.support:recyclerview-v7:23.4.0' compile ('com.android.support:support-v4:23.4.0'){ force = true;} compile 'com.google.android.gms:play-services-places:9.6.1' compile 'com.google.android.gms:play-services-maps:9.6.1' compile 'com.google.firebase:firebase-messaging:9.6.1' 标志在Windows上生成DLL的传闻,但我会非常小心地走这条路。