没有合适的资源?快使用搜索试试~ 我知道了~
首页基于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币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 数据结构1800题含完整答案详解.doc
- 医疗企业薪酬系统设计与管理方案.pptx
- 界面与表面技术界面理论与表面技术要点PPT学习教案.pptx
- Java集合排序及java集合类详解(Collection、List、Map、Set)讲解.pdf
- 网页浏览器的开发 (2).pdf
- 路由器原理与设计讲稿6-交换网络.pptx
- 火电厂锅炉过热汽温控制系统设计.doc
- 企业识别CIS系统手册[收集].pdf
- 物业管理基础知识.pptx
- 第4章财务预测.pptx
- 《集成电路工艺设计及器件特性分析》——实验教学计算机仿真系.pptx
- 局域网内共享文件提示没有访问权限的问题借鉴.pdf
- 第5章网络营销策略.pptx
- 固井质量测井原理PPT教案.pptx
- 毕业实习总结6篇.doc
- UGNX建模基础篇草图模块PPT学习教案.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论2