【vc++精品源码栏目提醒】:网学会员,鉴于大家对vc++精品源码十分关注,论文会员在此为大家搜集整理了“混合语言编程 - 编程语言”一文,供大家参考学习!
Fortran 90 程序设计 第10章 混合语言编程 精品快线之计算机2010-5-24 1 第10章 混合编程 本章主要内容 概 述 混合语言问题 混合语言编程中的数据交换和访问 处理混合语言编程的数据类型 Visual FORTRAN/C编程2010-5-24 2 第10章 混合编程 一、 概 述2010-5-24 3 第10章 混合编程 概 述 不同语言调用例程的等价形式2010-5-24 4 第10章 混合编程 概 述 先来看两个例子: 1、一个混合编程小程序 2、DUNS代码(CFD)2010-5-24 5 第10章 混合编程 概 述 【例 10.1】求最大值(Fortran调用C)2010-5-24 6 第10章 混合编程 概 述 【例 10.2】DUNS流场计算程序(Fortran和C互相调用)2010-5-24 7 第10章 混合编程 概 述 【例 10.2】DUNS流场计算程序(Fortran和C互相调用)2010-5-24 8 第10章 混合编程 概 述 【例 10.2】DUNS流场计算程序(Fortran和C互相调用)2010-5-24 9 第10章 混合编程 概 述 混合语言编程 由两种或者两种以上语言编写源代码,从一语言调用另外一种语言 子程序或彼此相互调用,进行参数传递,共享数据结构和信息,从 而建立程序的过程称为混合编程。
它是软件接口中关于程序接口技 术的一个重要研究领域,混合语言编程允许进行以下操作 调用已经存在的用其他语言编写的代码 使用以某种语言很难实现的过程 获得处理速度上的优势 从应用的角度来分析,软件接口有以下两种 语言程序间的接口(调用型接口,Call Type) 数据共享型接口 缓冲通讯型数据共享方式 数据文件共享型方式2010-5-24 10 第10章 混合编程 概 述 不同语言调用例程的差别2010-5-24 11 第10章 混合编程 概 述 高级语言编写应用程序的步骤 用高级语言如Fortran/C/C等)编写源程序; 用编译器(Compile)编译源程序形成: 目标文件(.obj),以文件为单元,二进制代码(机器码) 模块目标文件(.mod),以文件为单元,二进制代码(机器码) 用连接器(Linker)将目标文件、模块目标文件、库文件连接成可 执行程序(.exe: exe文件也是二进制代码 库文件包括静态库(.lib和动态库(.dll),均为二进制代码,可 以是系统自带或者用户编写的,库文件中不能有主程序 .lib和.dll库使用的最大差别是: .lib库中的函数复制到.exe中, .dll中的函数则无需复制,而是在.exe中说明要调用的函数放在哪 个.dll文件中,因此.dll与.exe一般必须放在同一目录下。
2010-5-24 12 第10章 混合编程 概 述 调用约定 为了正确地创建混合语言程序,必须为变量和过程的命名、堆栈的 使用、不同语言编写的例程(包括不同语言中的函数、子例程和过 程)之间传递的参数等建立一套规则。
包括: 堆栈考虑:1)一个例程是否接受可变或固定数目的参数?2)调用 后哪个例程负责清除堆栈? 命名约定:1)名称是否区分大小写?2)名称是否被修饰(像在 Visual C中)? 参数传递协议:1)参数是通过值传递还是通过引用传递?2)语言 之间的等价数据类型和数据结构是什么?2010-5-24 13 第10章 混合编程 二、混合语言问题 混合语言编程中的命名约定 混合语言编程中的调用约定 FORTRAN中过程的原型2010-5-24 14 第10章 混合编程 命名约定 命名约定的含义: 命名约定(协议)(naming convention,是为了解决不同语言对 名称标识符(包括变量名、参数名、过程名和函数名等)的不同处 理,对名称标识符的不同长度限制的有关规则、协议和约定。
其实质是:用编译程序在将一个程序块放入目标文件中之前改变这 个程序名称,即在混合语言调用时,采用一个兼容的、各种语言都 认可的名称约定。
在Microsoft公司语言序列编译器中,将编译后形成的机器码放入目 标文件(.obj),同时也要把所有需要进行访问的程序模块名、变 量名放在其中,一般链接程序LINKER把一个程序模块中的调用程 序名与另外一个程序名进行比较,最终确定两者是否匹配。
2010-5-24 15 第10章 混合编程 命名约定 VC/C、VB、Fortran和MASM中的命名约定比较:2010-5-24 16 第10章