本帖最后由 vvt 于 2016-12-13 13:02 编辑
我这里有一个和 C++ 混编用结构体的例子.可以借鉴
[C++] 纯文本查看 复制代码 #include <iostream>
using namespace std;
extern "C" int myfortran( struct in *a , struct out *b);
struct in{
int i;
double rr;
};
struct out{
char a[4];
double rr;
};
int main()
{
struct in X;
struct out Y;
X.i = 3;
X.rr= 6.0;
int c = myfortran( &X , &Y );
cout << "C++输出" << Y.a << Y.rr << endl;
//printf("c=%s,r=%f\n",Y.a,Y.rr);
return 0;
}
[Fortran] 纯文本查看 复制代码 Integer Function my(pA,pB) Bind(C,Name="myfortran")
use , Intrinsic :: ISO_C_Binding
implicit none
type T_IN
integer(C_INT) :: i
real(C_DOUBLE) :: rr
end type T_IN
type T_OUT
character(len=4) :: a
real(C_DOUBLE) :: rr
end type T_OUT
type(T_IN) , pointer :: A
type(T_OUT), pointer :: B
type(C_PTR) , value :: pA , pB
call c_f_pointer( pA , A )
call c_f_pointer( pB , B )
write(*,*) '给Fortran输入',A
B%rr = A%rr + 1.d0
B%a = "OUT" // c_null_char
end Function my |