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
1、Fortran代码这边为啥不用ISO_C_BINDING呢?
2、32和64位的C++接口为啥不能统一呢? ISO_C_Binding 可以统一32位和64位接口。不需要写 #if 条件编译。
FUNCTION waterprop_pt(pin, tin, ifn) Bind( C , Name="waterprop_pt") RESULT(value)
页:
[1]