ksfengjia 发表于 2018-10-26 15:32:59

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

环境vs2015+ivf2017
用fortran做了个水物性库,想在c++环境下调用。
vs2015下,x86使用时C++调用名:_waterprop_pt
                x64使用时C++调用名:waterprop_pt

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

下面是原有的代码,仅能实现x64调用,x86调用失败。

    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



    ENDFUNCTION waterprop_pt


pasuka 发表于 2018-10-26 22:23:21

1、Fortran代码这边为啥不用ISO_C_BINDING呢?
2、32和64位的C++接口为啥不能统一呢?

vvt 发表于 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)
页: [1]
查看完整版本: C++调用fortran编译静态库,x86,x64条件编译