代码之家  ›  专栏  ›  技术社区  ›  Graviton

GCC生成的DLL与Intel Visual Fortran不兼容?

  •  1
  • Graviton  · 技术社区  · 15 年前

    我使用gcc将一些Fortran源文件编译成 *.lib *.dll 在Windows平台上,使用最新版本的 mingw . 使用的GCC是版本3。输出结果为 arpack_win32.dll , blas_win32.dll lapack_win32.dll .

    然后我想编译 sssimp.f 反对 arpack_win32.dll文件 , BLASWIN 32.DLL lapack_win32.dll(lapack_win32.dll) 使用 Intel visual fortran compiler for Windows ,因为 sssimp.f 使用这些DLL。但我有个印象( from Intel support forum 这就是 可能的。

    我的印象正确吗 ?或者,只要我能生成底层的libs和dlls(无论编译器在哪一个版本中以及它有多旧),我就可以使用它们作为我的基本libs和dlls,并且可以从任何现代或旧的编译器链接到它们?

    2 回复  |  直到 10 年前
        1
  •  1
  •   janneb    15 年前

    G77使用的ABI与IVF不同,是的。所以,除非IVF有一些G77/F2C兼容性选项,否则它将无法工作。

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

        2
  •  0
  •   M. S. B.    15 年前

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

    英特尔论坛上的答案指出了翻译成Fortran 90的arpack版本。-- http://people.sc.fsu.edu/~burkardt/f_src/arpack/arpack.html --你能用那个吗?也看到 http://people.sc.fsu.edu/~burkardt/f_src/lapack/lapack.html http://people.sc.fsu.edu/~burkardt/f_src/blas1_s/blas1_s.html

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