【问题标题】:Intel Fortran External Library Linking Issue英特尔 Fortran 外部库链接问题
【发布时间】:2020-01-31 17:17:03
【问题描述】:

我正在尝试创建一个使用两个不同库的 Fortran 项目。一个是静态库,一个是 dll。静态库使用default 调用约定。 dll 使用iface:cref 调用约定。如果我自己使用任何一个,通过更改调用约定项目设置一切都很好;但是,我似乎无法获得编译器选项来使用两者来构建项目。有没有办法让它工作?

使用英特尔 Fortran 2019 和 Visual Studio 2017。

【问题讨论】:

    标签: visual-studio fortran intel-fortran


    【解决方案1】:

    https://software.intel.com/en-us/forums/intel-fortran-compiler/topic/844361 中的进一步讨论,但基本问题是,在 Windows 上,英特尔 Fortran 的默认设置是大写例程名称,但 /iface:cref 小写名称。我的建议是不要使用 /iface 之类的选项,而是使用 BIND(C,NAME=) 或指令来更改命名行为。

    【讨论】:

    • 虽然在链接的线程中,由于我的独特和当前情况,我最终使用了另一种解决方案,这是最好的一般情况解决方案。在无法访问库代码的情况下,有没有办法将此绑定应用为使用项目中的接口或包装器,而不是原始使用的库?
    • 正如我在回答中暗示的那样,您可以使用“语言绑定属性”BIND(C) 声明一个显式接口,包括一个 NAME= 说明符,它给出了您想要的名称的拼写和大小写采用。然后,编译器将添加“伴侣 C 处理器”将使用的任何“装饰”,例如,前导下划线。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    • 2021-11-14
    • 2017-06-03
    • 1970-01-01
    相关资源
    最近更新 更多