Fortran Coder

查看: 5456|回复: 2
打印 上一主题 下一主题

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

[复制链接]

35

帖子

17

主题

0

精华

熟手

F 币
136 元
贡献
240 点
跳转到指定楼层
楼主
发表于 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



分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

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

沙发
发表于 2018-10-26 22:23:21 | 只看该作者
1、Fortran代码这边为啥不用ISO_C_BINDING呢?
2、32和64位的C++接口为啥不能统一呢?

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

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

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)
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-25 08:51

Powered by Tencent X3.4

© 2013-2024 Tencent

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