我有一个 FORTRAN 95 程序,它需要调用 LAPACK 库。我最近发现了 Cygwin,因为它可以安装 LAPACK 作为额外选项。
好吧,LAPACK 以“cyglapack.dll”的形式存在于 /lib/lapack/ 目录中。在 Fortran 编程方面只有非常非正式的培训,我不知道如何引用 .dll 库而不是 .mod 模块。
非常感谢您对回答我的问题的文章的任何建议或指导!(PS 我先搜索了。我认为我不知道获得有用文章的正确术语。)
从概念上讲,调用 Lapack 应该和调用任何其他 DLL 一样简单。您只需要弄清楚要在构建语句中包含哪些链接标志和语句。
在 Fortran 中,您可能会声明为EXTERNAL
Lapack 中您不想使用的函数。这告诉编译器不要费心在源代码或 mod 文件中寻找函数的定义,而是在链接时提供定义。这就是有趣的开始,因为您尝试确保调用的签名与 DLL 预期的签名相匹配。
如果您提供更多信息,我可能会提供更多帮助。你的 Windows 开发环境是什么?您使用的是什么 Fortran 编译器?您使用什么编译和链接工具?您当前的链接声明是什么样的?
搜索词:dynamic linking fortran
看看这个页面:
http://sources.redhat.com/ml/binutils/2001-12/msg00471.html
它提到使用 dlltool.a
从文件生成.dll
文件。大概您应该能够以正常方式链接到它(通常是lib
编译命令上的开关)。
否则,首先考虑运行 linux Live CD 以避免问题!如果您是学生或学者,请查看是否可以找到安装了 fortran 的服务器(IT 人员通常很有帮助),您可以在其中编译和运行您的程序。