Module 是否可以将模块保存为库,以避免其在每个程序代码中永久复制和过时
我已经编写了一个模块,其中包括我需要的所有必要的子程序和函数。此模块是一个通用模块,我想知道是否有任何方法可以避免永久使用该模块的完整代码版本,而将其称为Fortran库或内部保存的模块?您可以以下方式使用该模块。如果您构建模块的代码,例如,该模块称为capsule,并且有一个名为sub的子例程,则会生成文件“capsule.mod”。现在,您可以通过以下方式在另一个项目中使用此模块:Module 是否可以将模块保存为库,以避免其在每个程序代码中永久复制和过时,module,fortran,Module,Fortran,我已经编写了一个模块,其中包括我需要的所有必要的子程序和函数。此模块是一个通用模块,我想知道是否有任何方法可以避免永久使用该模块的完整代码版本,而将其称为Fortran库或内部保存的模块?您可以以下方式使用该模块。如果您构建模块的代码,例如,该模块称为capsule,并且有一个名为sub的子例程,则会生成文件“capsule.mod”。现在,您可以通过以下方式在另一个项目中使用此模块: 将capsule.mod添加到链接器应该使用的文件列表中,或者如果使用ide,只需将该文件复制到所有objec
use capsule
在子例程、函数或主程序中,要使用模块的子例程call sub()
编辑:我指的是编译器,模块必须对编译器可见,而不是对链接器可见。您可以按以下方式使用模块。如果您构建模块的代码,例如,该模块称为capsule,并且有一个名为sub的子例程,则会生成文件“capsule.mod”。现在,您可以通过以下方式在另一个项目中使用此模块:
use capsule
在子例程、函数或主程序中,要使用模块的子例程call sub()
编辑:我指的是编译器,模块必须对编译器可见,而不是对链接器可见。或者,您可能希望将通用例程编译为共享库或DLL。这篇文章提供了gfortran和unix-y系统的一个最小示例;Windows上英特尔Fortran的一个例子是。我听说gfortran可以在Windows上使用
-shared
标志生成DLL,但我会非常小心地使用该方法。或者,您可能希望将通用例程编译为共享库或DLL。这篇文章提供了gfortran和unix-y系统的一个最小示例;Windows上英特尔Fortran的一个例子是。我曾听说gfortran可以使用-shared
标志在Windows上生成DLL,但我会非常小心。链接器通常对某些Fortran编译器生成的.mod文件一无所知。链接器使用目标代码。链接器通常对某些Fortran编译器生成的.mod文件一无所知。链接器使用目标代码。正如Alex提到的。。。使用,然后你得到一些界面检查。同意;不清楚目标是链接到预编译模块还是共享库。模块的一个缺点是.mod
文件不能跨编译器移植(即,使用ifort构建的文件不能与使用gfrotran构建的代码一起工作)。共享库(.so
,.dll
)应该避免这个问题,但代价是不进行接口检查和增加编译的复杂性。权衡…正如Alex提到的。。。使用,然后你得到一些界面检查。同意;不清楚目标是链接到预编译模块还是共享库。模块的一个缺点是.mod
文件不能跨编译器移植(即,使用ifort构建的文件不能与使用gfrotran构建的代码一起工作)。共享库(.so
,.dll
)应该避免这个问题,但代价是不进行接口检查和增加编译的复杂性。权衡。。。