Fortran混合编程.pdf
《Fortran混合编程.pdf》由会员分享,可在线阅读,更多相关《Fortran混合编程.pdf(3页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、在 C/C+语言中调用 Fortran 程序:Fortran 的子程序或者子函数按照其本身的语法来写即可;在 C+中的#include 语句结束后加上:(其中 extern“C”表示调用的子函数的来源,_stdcall 表示函数调用的形式(_为英文输入状态下 shift 加 2 条横线)extern Cvoid _stdcall FR1(int*,int*);int _stdcallFF1(int*);方法 1:对于 VS6.0 来说,可以在同一个 project 中新建 cpp 文件和 f90 文件,并可以直接调用对应的编译器分别编译。因此只要声明好调用方式就可以了。方法 2:上面的方法只对
2、 VS6.0 有效,在 VS2008+IVF2011 之后,IDE 无法自动识别其编译器,需要手动指定。指定的方法是将 Fortran 的函数编译成静态链接库(.lib)文件,然后放入 cpp 项目的源文件夹中。(此法对 VS6.0 同样有效)使用静态链接库有好处也有坏处,好处是可以将所有信息打包到一个 exe 中,缺点则是如果代码很长,程序功能很多,那么最后打包的 exe 体积会比较庞大,且一旦 Fortran 代码更新了,整个 cpp 项目都要重新编译,这对大的程序项目来说是非常费时的。在这个基础上,考虑动态链接库(dll 文件)。其基本步骤是新建 Fortran 的 DLL 文件,同时对
3、每一个子函数或者子程序进行声明,给出其在 DLL 文件中的调用名称。编译出 DLL 文件和 lib 文件,再将两者拷贝到 cpp 项目的 debug 文件夹下,在项目源文件夹中指定 lib 文件,在生成 exe 即可。这时候运行 exe 时都需要有对应的 DLL 文件,如果 Fortran 代码有更新,只要更新 DLL文件即可,无需再次编译 cpp 项目。反过来,也可以类似的通过这种方式在 Fortran 程序中调用 C+的子函数/子程序。此时应注意是 C+默认是传值,Fortran 默认是传址!另外 C+子程序前的_stdcall 不能省略,否则提示“重复定义”的错误。其他的与 C+调用 Fortran 是一致的。感觉 Fortran调用 C/C+注意点稍微要多一点。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Fortran 混合 编程
限制150内