在FORTRAN的过程和函数中调用C++函数的方法
2008-03-04 18:08
302 查看
在FORTRAN的过程和函数中调用C++函数,可按如下三步处理(以调C++函数Sample为例)
1:在调用函数所在的Fortran函数的最前部要用USE 声明该函数 USE Sample_Mode
2:在Fortran文档中,需要说明Sample函数的接口
MODULE Sample_Mode
INTERFACE
SUBROUTINE Sample(nFlag,nFlagV )
!MS$ATTRIBUTES C,ALIAS:’_Sample’:: Sample
!MS$ATTRIBUTES REFERENCE :: nFlag
!MS$ATTRIBUTES VALUE :: nFlagV
INTEGER nFlag,nFlagV
ENDSUBROUTINE
END INTERFACE
END MODULE
说明:
!MS$ATTRIBUTES C,ALIAS:用来说明函数名间的关系,在‘’內为该函数在C++中的函数名,在::后为在FORTRAN中调用的函数名,两者可不同,也可相同。
!MS$ATTRIBUTES REFERENCE :: nFlag 说明参数传递是引用方式,修改后对调用过程有效;
!MS$ATTRIBUTES VALUE :: nFlag 说明参数传递是传值方式,修改后对调用过程无效;
3:在C++文档中,该函数的说明
extern “C” void Sample(int *nFlag, int nFlagV )
{
}
注意:此处“C”的C必需为大写。
1:在调用函数所在的Fortran函数的最前部要用USE 声明该函数 USE Sample_Mode
2:在Fortran文档中,需要说明Sample函数的接口
MODULE Sample_Mode
INTERFACE
SUBROUTINE Sample(nFlag,nFlagV )
!MS$ATTRIBUTES C,ALIAS:’_Sample’:: Sample
!MS$ATTRIBUTES REFERENCE :: nFlag
!MS$ATTRIBUTES VALUE :: nFlagV
INTEGER nFlag,nFlagV
ENDSUBROUTINE
END INTERFACE
END MODULE
说明:
!MS$ATTRIBUTES C,ALIAS:用来说明函数名间的关系,在‘’內为该函数在C++中的函数名,在::后为在FORTRAN中调用的函数名,两者可不同,也可相同。
!MS$ATTRIBUTES REFERENCE :: nFlag 说明参数传递是引用方式,修改后对调用过程有效;
!MS$ATTRIBUTES VALUE :: nFlag 说明参数传递是传值方式,修改后对调用过程无效;
3:在C++文档中,该函数的说明
extern “C” void Sample(int *nFlag, int nFlagV )
{
}
注意:此处“C”的C必需为大写。
相关文章推荐
- C++对FORTRAN过程的调用的方法
- c++里调用 perl 子过程(函数)
- [matlab]--调用不同路径下函数的方法(类似c++#include(xxx))
- C/C++—— 在构造函数中调用虚函数能实现多态吗(Vptr指针初始化的过程分析)
- cocos2d-x项目调用当前函数中c++方法替代objc selector
- oracle 存储过程和函数的调用方法
- C++ 类成员函数回调调用方法
- C++和Fortran混合编程时调用数学函数的问题: error LNK2005: __matherr already defined in LIBCD.lib
- ibatis调用oracle的函数,存储过程的方法_IN_和OUT_游标
- php调用mysql存储过程和函数的方法
- 使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
- C++程序员必经之路——函数调用过程【转载】
- php调用mysql存储过程和函数的方法
- ibatis调用oracle的函数,存储过程的方法_IN_和OUT_游标
- 使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
- C++ 中static变量在函数被调用的过程中维持其值不变
- ibatis调用oracle的函数、存储过程的方法 in和out游标
- 使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法