没有合适的资源?快使用搜索试试~ 我知道了~
首页基于VS2008和IVF11的C/C++和Fortran混合编程
资源详情
资源评论
资源推荐
基于 VS2008 和 IVF11 的 C/C++和 Fortran 混合编程
By X.C. Li(lxc1975@gmail.com)
调用时,先将有 Fortran 写出来的函数建立成动态库,然后在 C++程序中连接这个动态
库,连接的方式有显示和隐式两种。本文提及的仅限于隐式连接。
C/C++编译器:MSVS2008(VC9),对 VS2005 也适用。
Fortran 编译器:Intel Visual Fortran Compiler 11.0,IVF 的其它版本也适用。
操作系统:Win7。
1. 建立 Fortran 动态库
1.1 用 IVF 建立一个 dynamic-link library 项目,比如项目名为 FortranDLL。在项目中新
建 f90 代码文件,比如文件名为 FortranSrc.f90。在 FortranSrc.f90 中写下如下代码:
double precision function addF(x, y)
!DEC$ ATTRIBUTES DLLEXPORT, STDCALL:: addF
!DEC$ ATTRIBUTES VALUE::x, y
implicit none
double precision x, y
addF = x + y
return
end function addF
1.2 说明:
1)Fortran 不区分大小写,代码的大小写纯粹是为了可读性。
2)!DEC$ ATTRIBUTES DLLEXPORT, STDCALL::addF。首先,这一行中的“!”并非注
释的意思。行中的 STDCALL(它被叫做调用约定)不能少,否则 C++程序(这里说的
是 C++调用时)编译时,会报错为:无法连接 addf 函数。之所以提醒这一点,是因为
在早期的版本中缺省就是 STDCALL,所有可有可无。如果你按照早前的资料去做的话
就不行了。不同的编译器以及在不同的操作系统上其缺省的值不一样,为了稳妥或程序
的可读性,将调用约定显式写出来比较好。
3)对!DEC$ ATTRIBUTES VALUE::x, y 的解释。在 FORTRAN 和 C++过程之间可以用
参数传递的方法实现交换数据的功能。参数传递的方式有两种:一种是传值,另一种是
传址。C++缺省方式是值传递,所传递的是参数的当前值。FORTRAN 缺省的传递方式
为引用传递,所传送的是参数的地址。在更改缺省状态或为增强可读性,在 FORTRAN
中通过对参数指定 REFERENCE 或 VALUE 属性来具体声明参数的传递方式。
4)其它代码遵循 Fortran 的规则就可以了,没什么特别的。
broo
- 粉丝: 5
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 27页智慧街道信息化建设综合解决方案.pptx
- 计算机二级Ms-Office选择题汇总.doc
- 单链表的插入和删除实验报告 (2).docx
- 单链表的插入和删除实验报告.pdf
- 物联网智能终端项目设备管理方案.pdf
- 如何打造品牌的模式.doc
- 样式控制与页面布局.pdf
- 武汉理工Java实验报告(二).docx
- 2021线上新品消费趋势报告.pdf
- 第3章 Matlab中的矩阵及其运算.docx
- 基于Web的人力资源管理系统的必要性和可行性.doc
- 基于一阶倒立摆的matlab仿真实验.doc
- 速运公司物流管理模式研究教材
- 大数据与管理.pptx
- 单片机课程设计之步进电机.doc
- 大数据与数据挖掘.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论6