1

我使用 gcc 使用最新版本的mingw将一些 fortran 源文件编译到*.libWindows*.dll平台上。使用的 gcc 是版本 3。输出的结果是,和。arpack_win32.dllblas_win32.dlllapack_win32.dll

然后,我想针对 sssimp.f 编译sssimp.f arpack_win32.dllblas_win32.dll使用lapack_win32.dllIntel visual fortran compiler for Windows,因为sssimp.f使用了这些 dll。但我(来自英特尔支持论坛)的印象是这是不可能的。

我的印象正确吗?还是只要我可以生成底层的库和dll(无论在哪个编译器中以及它有多旧),我都可以将它们用作我的基础库和dll,并且我可以从任何现代或现代链接到它们旧的,编译器?

4

2 回答 2

1

g77 使用与 IVF 不同的 ABI,是的。因此,除非 IVF 有一些 g77/f2c 兼容性选项,否则它将无法工作。

对您来说最简单的解决方案可能也是使用 IVF 来编译库。

于 2010-01-27T02:00:18.030 回答
0

正如已经指出的那样,将编译器与不同的调用约定混合在一起可能非常困难。

英特尔论坛上的那个答案指出了翻译成 Fortran 90 的 arpack 版本——http://people.sc.fsu.edu/~burkardt/f_src/arpack/arpack.html——可以使用它吗?另见http://people.sc.fsu.edu/~burkardt/f_src/lapack/lapack.htmlhttp://people.sc.fsu.edu/~burkardt/f_src/blas1_s/blas1_s.html

或者英特尔 Visual Fortran 应该能够使用合适的编译器选项编译 Fortran 77。它拒绝什么语言结构?

于 2010-01-27T02:46:21.700 回答