C++与Fortran的混合编程问题.doc

上传人:asd****56 文档编号:70332309 上传时间:2023-01-19 格式:DOC 页数:4 大小:328KB
返回 下载 相关 举报
C++与Fortran的混合编程问题.doc_第1页
第1页 / 共4页
C++与Fortran的混合编程问题.doc_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《C++与Fortran的混合编程问题.doc》由会员分享,可在线阅读,更多相关《C++与Fortran的混合编程问题.doc(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、C/C+调用Fortran的使用说明这里将详细介绍一下在C+中如何调用用Fortran语言编写函数的问题,即Fortran与C+的混合编程问题。通常情况下,C与Fortran的混合编程问题是利用动态链接库的方式进行的,换句话说,如果在C/C+中调用Fortran函数,应将Fortran函数按照一定的协议编译为动态链接库,然后即可实现二者的混合编程问题。实现这一目的有两种方式:显示链接与隐式链接,下面通过两个非常简单的实例分别介绍之。编译环境:Fortran:推荐使用Compaq Visual Fortran 6.0以上的版本,C+:Microsoft Visual C+6.0。1. 显式链接,

2、 (a) 找开CVF编译器,然后新建一个Fortran DLL工程(选择Fortran Dynamic Link Library),并指定工程名,如下图所示:按确定按钮,然后新建一个Fortran 源文件,并输入以下的Fortran代码:(这里仅为说明问题,实际的问题比下面的代码要复杂得多。)SUBROUTINE OUTPUT(N)!必须声明本函数为输出函数:DLLEXPORT!DEC$ ATTRIBUTES DLLEXPORT:OUTPUTIMPLICIT NONEINTEGER NN=N+10WRITE(*,*) N=,nEND SUBROUTINE OUTPUT经编译,链接后,将在Deb

3、ug目录下生成两个文件,即dll文件与lib文件。(b) 启动Visual C+6.0,然后新建一个console工程(即Win32 Console Application,当然在MFC中也是完成可行的),如下图所示:按确定按钮,新建一个空的工程后,再新建一个C+源文件,并输入以下的代码:#include #include int main()typedef void (_stdcall * wndProc)(int& ); HINSTANCE hLibrary=LoadLibrary(pp.dll); /加载动态库文件if(hLibrary=NULL)coutcant find the dl

4、l fileendl;return -1;wndProc test=(wndProc)GetProcAddress(hLibrary,OUTPUT); /获得Fortran导出函数的地址if(test=NULL)coutcant find the function file.endl;return -2;int n=3;test(n);/调用fortran函数FreeLibrary(hLibrary); /卸载动态库文件return 0;当编译通过后,将由fortran编译器生成的动态库文件(本算例为pp.dll)复制到C+的Debug文件夹中(即mmdebug),然后点击执行即可,程序的动行

5、结果为:2. 隐式链接与上文所介绍的显示链接相比,隐式链接要相对容易一点。下面也通过一个算例进行说明。 (1) 建立一个Fortran动态库文件,其方法与上述完全相同,然后在CVF编译器中输入以下的代码:SUBROUTINE OUTPUT(N)!下面为对Fortran函数的声明!ms$if .not. defined(LINKDIRECT)!ms$attributes dllexport : OUTPUT!ms$endifIMPLICIT NONEINTEGER NN=N+10WRITE(*,*) N=,nEND SUBROUTINE OUTPUT编译通过后,将在Fortran工程文件夹的De

6、bug文件夹中生成两个文件,即*.dll文件与*.lib文件。(2) 新建一个C+ Console项目,并新建一个C+文件,然后输入以下的代码:#include #include /声明函数OUTPUT为extern型的,即是从外部调用的。extern C void _stdcall OUTPUT(int& n);int main()int n=3;OUTPUT(n);return 0;然后将Fortran编译器生成的两个文件(dll文件与lib文件)复制到C+的当前目录下,并将lib文件加入到当前的C+工程项目中,如下图所示:点击菜单“工程添加工程Files”,然后选中pp.lib文件即可,如下图所示:此时即可通过编译,执行此程序,其输出结果如下所示:总结本文通过两个简单的实例详细介绍了如何在C+中调用Fortran函数的两种方法,即显式链接与隐式链接。当然实际中我们所遇到的问题将会比本实例要复杂得多,本文仅作为抛砖引玉之用。显式链接与隐式链接两种方法均各自有其优缺点,但由于隐式链接要比显示链接容易得多,也易于理解,实际的大部分算例均采用这种方式。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁