C_与Fortran混合编程及其在气象软件中的应用.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C_与Fortran混合编程及其在气象软件中的应用.pdf》由会员分享,可在线阅读,更多相关《C_与Fortran混合编程及其在气象软件中的应用.pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、中图分类号:311文献标识码:文章编号:1009-2552(2010)11-0028-03#与 混合编程及其在气象软件中的应用张金喜,顾韵华(南京信息工程大学计算机软件学院,南京 210044)摘要:语言由于其强大的计算功能被广泛地应用于科学计算领域。通过#和 混合编程技术的应用,可充分发挥#在图形界面开发和 在高性能计算上各自的优势,有效利用已有程序资源,提高开发效率。讨论了基于动态链接库技术实现#与 混合编程的关键问题。以某人工增雨效果评估应用系统项目应用为例,阐述了#与 的混合编程实现。关键词:混合编程;动态链接库;接口;气象软件#-,-(,210044,):.#-.-#.,-#.:-;
2、0 引言 语言是一种适合数值计算的语言,具有强大的科学计算能力。在多年的科学研究中,气象行业已经积累了大量的成熟的气象数值处理运算程序函数包。但这些程序函数包的运行结果多为 界面,不美观而且展示不方便。要有效利用现有的程序资源开发更为强大的应用程序,可以充分利用混合编程技术。#语言开发快速高效,程序开发周期短,产品界面丰富美观。因此通过#与 -混合编程可以充分发挥两种语言各自的优势,提高产品的开发效率。混合编程是指在一个系统中利用多种语言进行编程,多种语言间相互调用,各自完成相应的功能,共同服务于整个系统。目前 ,等语言与 -之间的相互调用已经进行了大量的研究,但#和 之间的相互调用的研究尚不
3、多。本文基于动态链接库技术解决了#与 语言混合编程中的关键问题,并给出了#与 混合编程在某人工增雨效果评估应用系统项目中应用的具体实现。1#与 混合编程1.1#与 混合编程方法#与 混合编程的方法主要有以下 3种 1。(1)部件方式:将共享代码封装在 -部件之中。部件有两种,一种是编译收稿日期:2010-05-17基金项目:国家发改委“青海省三江源自然保护区人工增雨工程”项目(2009-01)作者简介:张金喜(1983-),男,硕士研究生,主要从事计算机网络与信息安全研究。28生成动态链接库 文件,另一种是生成 文件,这两种部件都可以将代码和资源文件作为公共接口供其他程序调用。(2)混合编程的
4、几种语言可以相互链接,最终生成一个 程序。(3)其他应用进程间通讯的方式:如可用对象连接与嵌入技术 (-),等 函数实现以及共享内存等技术来实现。其中方法(1)中的基于动态链接库 的形式进行混合编程很好地实现了代码的封装性、可复用性、可维护性以及可移植性,具有较高的执行效率。本文将采用该方法进行混合编程,使用#完成软件的可视化界面与总体设计,核心的计算功能和中间结果的保存则仍由 所生成的 来完成。1.2 基于 的混合编程技术由于#和 语言在标识符约定、调用约定、参数传递和返回、数组和字符串类型等方面存在差异,在设计和调用的时候必须遵循一定的规则 2。协调二者在以上几个方面的使用是实现#和 语言
5、混合编程的关键。1.2.1标识符约定#语言的标识符区分大小写,则不存在大小写问题。缺省方式下标识符在目标文件中将转换成大写,#中需用一个纯大写的名称来调用 中的接口函数。当在 中指定使用 或 属性时,编译后将所有函数名称转换为小写的函数名称 3。使用 的 属性即可以实现大小写混合的模式,它指出了 声明的子程序或函数的别名,编译成 后供其他程序调用时可以直接使用别名就可以正确调用。如:!:其中 :表示输出的函数名为 ,而如果没有使用 属性的话编译后的函数名则使用 默认的调用约定,函数名字母全部大写即“”。1.2.2调用约定调用约定可以决定函数参数传送时入栈、出栈顺序,是由调用者还是被调用者负责参
6、数的出栈。要使混合编译获得成功,必须全面一致地协调两者所使用的调用约定。#使用的调用约定默认为 ,语言可以使用默认的调用约定、-和 。在#与 语言混合编程时,函数调用可以采用 与 调用约定之间的任意一种,但是必须统一 4。可将两种语言的调用约定都设成“”模式,也可都设成“”模式。在 中使用“!”命令用来指定调用约定是“”还是“”。如:!:同时也需要在#的 的 -属性中指定调用约定的方式。(.,-=.)1.2.3 参数传递和返回#的参数传递方式默认为值传递,而 默认的是引用传递,因此在进行混合编程时需要统一两种语言的接口函数的每个参数的传递方式。使用 编写函数时,可通过 和 -来指定参数的返回类
7、型,这样可以约定每一个参数的具体的传递方式,在定义了 和 属性后,调用约定(默认、-)对参数的传递方式的限定将不起作用。1.2.4 数组类型 语言中的数组采用按列的存储方式,而在#语言中的数组采用的是和/+相同的存储方式即按行存储。同时在 中数组的下标从 1开始,而在#中数组的下标从 0开始。由于在#和 中数组的存储方式不一样,所以将多维数组作为参数传递时,需要将行和列的存储位置对调。同时,数组作为参数传递,实际上传递的是数组的首地址,所以需要用 限定为传址调用并将数组第一个元素传递出去 5。1.2.5 字符和字符串类型#中的字符串每个字符占 2个字节,而在 -中每个字符占用 1个字节。所以当
8、使用#和 进行混合编程直接传递字符或字符串类型的数据时就会传递乱码的现象。同时#和 中字符串的表示方式不一样。在#中,字符串以 0 表示字符串的结束。在 里字符串没有结束符,编译器会在字符串后面加上字符串的长度。由于#和 中的字符串的表示方式不一样,所以需要统一两种语言的表示方式即可正确传递。如果没有约定使用 方式,则需要在#中将字符串的长度和字符串一块作为参数传递给 -中的接口函数 6。292 混合编程的应用本节通过对某人工增雨效果评估应用系统的开发,阐述#调用 程序的实现过程。该系统由 5大子系统组成,子系统又包含了若干个模型,如:,等。目前国内外对这些模型研究的较多,大部分模型都有 计算
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C_ Fortran 混合 编程 及其 气象 软件 中的 应用
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内