Fortran Coder

查看: 56|回复: 2

[混编] C++调用fortran编译静态库,x86,x64条件编译

[复制链接]

32

帖子

15

主题

0

精华

熟手

F 币
150 元
贡献
213 点
发表于 2018-10-26 15:32:59 | 显示全部楼层 |阅读模式
环境vs2015+ivf2017
用fortran做了个水物性库,想在c++环境下调用。
vs2015下,x86使用时C++调用名:_waterprop_pt
                x64使用时C++调用名:waterprop_pt

问题:不改变C++头文件的情况下,用什么样的编译命令能够条件编译x86和x64的静态库?

下面是原有的代码,仅能实现x64调用,x86调用失败。
[Fortran] 纯文本查看 复制代码
    FUNCTION waterprop_pt(pin, tin, ifn) RESULT(value)

    ! static lib statement

    !DEC$ IF DEFINED(_X86_)

    !DEC$ Attributes C, Dllexport, Alias : '_waterprop_pt'::waterprop_pt

    !DEC$ ELSE

    !DEC$ Attributes C, Dllexport, Alias : 'waterprop_pt'::waterprop_pt

    !DEC$ ENDIF



    END  FUNCTION waterprop_pt



回复

使用道具 举报

465

帖子

3

主题

0

精华

大宗师

F 币
3150 元
贡献
1867 点

水王勋章元老勋章热心勋章

发表于 2018-10-26 22:23:21 | 显示全部楼层
1、Fortran代码这边为啥不用ISO_C_BINDING呢?
2、32和64位的C++接口为啥不能统一呢?

586

帖子

0

主题

0

精华

大师

F 币
483 元
贡献
305 点

规矩勋章元老勋章新人勋章水王勋章

QQ
发表于 2018-10-26 22:24:49 | 显示全部楼层
ISO_C_Binding 可以统一32位和64位接口。不需要写 #if 条件编译。

FUNCTION waterprop_pt(pin, tin, ifn) Bind( C , Name="waterprop_pt") RESULT(value)
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2018-11-14 05:59

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表