【问题标题】:GCC Produced Dlls Not Compatible with Intel Visual Fortran?GCC 生成的 Dll 与 Intel Visual Fortran 不兼容?
【发布时间】:2010-01-27 01:56:10
【问题描述】:

我在Windows平台上使用gcc将几个fortran源文件编译成*.lib*.dll,使用最新版本的mingw。使用的gcc是版本3。输出的结果是arpack_win32.dllblas_win32.dlllapack_win32.dll

然后我想使用 Intel visual fortran compiler for Windows 针对 arpack_win32.dllblas_win32.dlllapack_win32.dll 编译 sssimp.f,因为 sssimp.f 使用这些 dll。但我的印象 (from Intel support forum) 这是不可能可能的。

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

【问题讨论】:

    标签: gcc fortran intel-fortran


    【解决方案1】:

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

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

    【讨论】:

    • @janneb,我担心用 f77 编写的 arpack 代码中有一些 IVF 不兼容的语言结构......
    • 尽管如此,将代码与不兼容的调用约定结合起来是行不通的。
    【解决方案2】:

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

    英特尔论坛上的那个答案指出了一个翻译成 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。它拒绝什么语言结构?

    【讨论】:

    • 不确定 f90 的翻译版本---作者本人澄清说,fortran 90 版本可能是粗略的、不完整的或完全错误的 (people.sc.fsu.edu/~burkardt/f_src/f_src.html)。据我所知,整个 ARPACK 包中只有一两个例程被翻译了。
    • 我认为“使用是你的责任/风险”——仍然值得一试,看看它是否适用于你的编译器并为测试用例产生正确的答案。
    猜你喜欢
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 2017-12-27
    • 1970-01-01
    • 2021-11-27
    相关资源
    最近更新 更多