用VB和Fortran混合编程开发科学计算与作图软件
Matlab与Fortran的混合编程及其应用
第25卷 第1期 桂林工学院学报 Vol.25No.1 2005年1月 JOURNAL OF G U I L I N UN I V ERSI TY OF TECHNOLOGY Jan12005文章编号:1006-544X(2005)01-0076-05M a tl ab与Fo rtran的混合编程及其应用刘羽1,2(11中国地质大学地球物理与空间信息学院,武汉 430074;21桂林工学院电子与计算机系,广西桂林 541004)摘 要:介绍和分析了Matlab与Fortran混合编程的两种方式,即利用Mex文件和利用Matlab引擎;给出了其具体实现方法,并讨论了各自的优缺点和适用情况;给出了一个物探数据可视化的应用实例.分析和实验结果表明:通过Matlab与Fortran混合编程,不仅可以利用Mat2lab强大的图形功能和丰富的工程计算函数,还能发挥Fortran数值运算高效的特点和利用其原有的大量程序资源,从而使编程更为灵活、高效.如Fortran程序中有大量交互输入,宜采用Matlab引擎混合编程方式;如Fortran中要调用的Matlab函数较多,则应考虑采用Mex文件混合编程.关键词:Matlab;Fortran;混合编程;接口中图分类号:TP311 文献标识码:AM atlab提供了强大的矩阵运算和图形处理功能以及大量工程计算领域中常用的数值处理函数和高效工具箱,不仅编程效率很高,适合数据处理及结果的可视化,而且在理论和算法上成熟可靠.但由于是一种解释型语言,M atlab也有不足之处,如执行次数较多的循环特别是多层嵌套循环时速度较慢,不太适合做大规模的数值计算和分析[1].Fortran语言是传统的数值处理语言,处理速度高,编程简便,有很多源代码资源可供使用,但绘图功能不强,在可视化方面需要编制复杂的代码.因此,用两种语言混合编程,可以充分利用M atlab中丰富的函数及Fortran语言原有的算法程序,弥补彼此的不足,这已成为当前科学问题和工程问题的一种良好解决方案.1Matlab与Fortran混合编程及数据传递方式111 混合编程方式M atlab提供了多种途径及相应的AP I(应用程序接口)函数实现与其它语言的混合编程,但就Fortran来说,常用的是利用M ex文件和利用M at2 lab引擎两种方式:前者是以M atlab为主调程序,调用Fortran代码编译后的M ex文件,此种方式必须在Matlab环境下运行;后者则是用Fortran设计应用程序框架,以其编译的程序作为前端客户机,通过调用M atlab引擎,实现后台与M atlab服务器的连接和动态通信.此种方式下,程序可在W in2 dows下任何地方运行,但仍需要M atlab在后台运行.因此无论采用哪种方式,运行时都必须具有M atlab的支持.112数据传递方式多种语言的混合编程中,最重要的是要解决它们之间的数据传递问题.M atlab和Fortran语言的运算单位不同,前者是基于矩阵(mx A rray结构体),后者是基于数,两者的数据类型无法直接匹配,必须通过M atlab提供的指针变量来进行交互.其基本原理:M atlab首先将需要传递的mx A rray结构体的内存地址作为一个整型数值传给Fortran程序,然后在Fortran程序中调用M atlab引擎提供的访问函数,这些函数自动地将传给它的这个整数值作为地收稿日期:2004-11-01基金项目:广西自然科学基金资助项目(桂科基[0339070])作者简介:刘羽(1961-),男,博士研究生,高级工程师,研究方向:数据处理、并行计算.址去读取或写入mx A rray结构体中的相应数据.传统的Fortran77不支持指针变量,因此必须借助M atlab的AP I函数来完成传递.若采用的编译器支持%vol结构(如Fortran90),则可省去对AP I函数的调用而直接使用指针数据,效率更高.为更具普遍性,本文以Fortran77为标准进行讨论.2混合编程211 利用M e x文件实现混合编程M ex是M atlab的可执行程序,在W indow s环境中,它是扩展名为DLL的动态链接库,可以在M at2 lab中直接调用[2].Fortran M ex文件通常由两个显著不同的部分组成:(1)计算子程序,是完成计算功能的纯Fortran程序,通常为现有的Fortran程序代码;(2)入口子程序,是计算子程序与M atlab环境之间的接口,用来完成相互之间的调用.计算子程序实际上被入口子程序当作子程序来调用,如果非常简单,也可以直接嵌入到入口子程序中,但为了保持可读性,一般不建议这么做.入口子程序名字为mexFuncti on,包含4个虚拟参数:Prhs,输入参数指针;N rhs,输入参数个数;Plhs,输出参数指针;N lhs,输出参数个数.调用格式为: subr outine mexFuncti on(nlhs,p lhs,nrhs,p rhs)入口子程序要跟M atlab进行数据交换,Matlab 为此提供了1组编写M ex文件的AP I函数,表1列出了Fortran M ex文件的主要AP I函数.表1 M ex文件常用的AP I函数及功能Table1 U sual AP I functions in Mex file函数名称功 能 说 明 mex Function完成Mex文件和Matlab的接口功能mexGet A rray从Matlab中读出矩阵mexPut A rray向Matlab中写入矩阵mexGet A rrayPtr获取Matlab工作空间中的矩阵指针mexCall M atlab调用Matlab指令、M函数和其它Mex文件mexErr M sgTxt处理异常情况mexEvalstring执行字符串所代表的Matlab命令以下通过一个简单例子来说明Fortran M ex文件的整体结构.该程序用于计算一个数的倍数(省略输入参数检查部分):c 定义入口子程序subr outine mexFuncti on(nlhs,p lhs,nrhs,p rhs)c 定义输入、输出指针,AP I函数integer p lhs(3),p rhs(3)integer mxGetPr,mxCreateFullinteger x_p r,y_p rinteger nlhs,nrhsinteger mxGet M,mxGet N,mxIs Nu mericinteger m,n,sizereal38x,ym=mxGet M(p rhs(1))n=mxGet N(p rhs(1))c 计算输入数据的大小size=m3nc产生输出矩阵p lhs(1)=mxCreateFull(m,n,0)c获取输入参数指针x_p r=mxGetPr(p rhs(1))c获取输出参数指针y_p r=mxGetPr(p lhs(1))c将输入数据传送到x以便计算子程序计算call mxCopyPtrToReal8(x_p r,x,size)c调用计算子程序call ti m est w o(y,x)c将结果数据传送到输出矩阵call mxCopyReal8ToPtr(y,y_p r,size)returnendc计算子程序subr outine ti m est w o(y,x)real38x,yy=2103xreturnend212利用M a tla b引擎实现混合编程这是简单而直接的混合编程方式,Fortran程序通过调用M atlab引擎函数,便可向M atlab发送命令,控制其运行.启动M atlab引擎时,相当于启动了另外一个Matlab进程,该进程在后台运行,用户应用程序通过M atlab引擎函数库提供的函数完成与M atlab引擎的数据交换和命令传递任务.表2列出了常用的引擎函数.混合编程的主要步骤如下:(1)AP I函数申明,包括引擎函数和访问函数.(2)指针变量的定义,在M atlab与Fortran混合编程中,指针是传递数据的唯一方式.因此,每表2 M a tl a b引擎常用函数Table2 U sual functions of Matlab engine 函数名称 功 能 说 明eng Open启动Matlab引擎,建立ActiveX通道engClose关闭Matlab引擎engGet M atrix从Matlab引擎中获得矩阵engPut M atrix向Matlab引擎写入矩阵engEvalString执行Matlab命令eng Output Buffer建立一个缓冲区,存储Matlab文本输出77第25卷 第1期 刘羽:Matlab与Fortran的混合编程及其应用一个传递到M atlab 中的Fortran 数据都需要一个指针来指向其在M atlab 中对应的mx A rray 结构体.(3)启动M atlab 引擎.(4)创建输出矩阵.M atlab 的基本运算单位是矩阵,因此任何传输到M atlab 中的值必须转化成矩阵形式.(5)指定mx A rray 的名字.(6)将Fortran 数组传送至步骤(4)创建的M atlab 输出矩阵中.(7)将输出矩阵写入M atlab 的工作空间.(8)执行所需的M atlab 函数调用.M atlab 函数调用的语法由M atlab 来检查,Fortran 编译程序并不能给出错误信息,因此要特别注意函数调用的书写规则.(9)计算结果返回给Fortran 程序,进行后续处理.一个简单例子:Fortran 传送一个数组ti m e 到M atlab 的矩阵T ,M atlab 计算出矩阵D 并显示结果曲线(图1),然后将计算结果D 传送给Fortran 数组dist ,最后在Fortran 中显示数值计算结果.图1 Fo rtran 调用M a tl ab 绘图Fig 11 D rawing by calling Matlab in Fortranp r ogra m mainc 申明AP I 函数integer eng Open,engGet M atrix,mx CreateFull,mxGetPrc申明指针integer ep,T,Ddouble p recisi on ti m e (10),dist (10)integer engPut M atrix,engEvalString,engCl ose integer te mp,status c给ti m e 数组赋值data ti m e /110,210,310,4.0,5.0,6.0,7.0,8.0,9.0,310.0/c 启动Matlab 引擎会话ep =eng Open (′Matlab ′)c创建输出矩阵T =mxCreateFull (1,10,0)c 给输出矩阵命名,即Matlab 中名为Tcall mxSet N a me (T,′T ′)c 将数组ti m e 复制到输出矩阵Tcall mxCopyReal8ToPtr (ti m e,mxGetPr (T ),10)c 将输出矩阵写入Matlab 工作空间call engPut M atrix (ep,T )c调用Matlab 函数call engEvalString (ep,′D =1513(-918)13T 1^2;′)call engEvalString (ep,′p l ot (T,D );′)call engEvalString (ep,′title (″Positi on vs .Ti m e ″)′)call engEvalString (ep,′xlabel (″Ti m e (seconds )″)′)call engEvalString (ep,′ylabel (″Positi on (meters )″)′)c暂停,以便看显示的图形,按任意键继续read (3,3)call engEvalString (ep,′cl ose;′)从工作空间获取结果矩阵D =engGet M atrix (ep,′D ′)c 将结果矩阵复制到数组distcall mxCopyPtrToReal8(mxGetPr (D ),dist,10)c进行后续处理p rint 3,′Matlab computed the foll owing distances:′p rint 3,′ti m e (s )distance (m )′do 10i =1,10c 显示结果p rint 3,ti m e (i ),dist (i )10continuecall mxFree Matrix (T )call mxFree Matrix (D )call engCl ose (ep )st op end3文件的编译和使用无论采用M ex 文件还是M atlab 引擎混合编程,其代码都必须经过正确的编译才能使用.因此,必须安装M atlab AP I 组件和合适的Fortran 语言编译器,如果工作在W indows 平台上,编译器还必须支持动态链接库.两种混合编程方式都可以用M ex 命令来编译.M atlab AP I 支持多种Fortran 编译器,并为不同的编译器提供相应的选项文件(如Compaq V isual For 2tran 611使用的选项文件为df60op ts 1bat ),因此在进行文件编译之前,要正确配置好编译器默认选项文件,做法是在M atlab 命令窗口中键入mex 2setupM atlab 会自动寻找系统中已安装的Fortran 编译器,只要依提示进行相应选择即可.配置完成后,就可以简单地使用命令mex <源文件名>87桂 林 工 学 院 学 报 2005年对源文件进行编译生成可执行文件了,该命令使用默认的编译选项文件.也可以采用以下命令mex∃f<选项文件名><源文件名>来编译源文件,这样就可以通过选择不同的选项文件来使用相应的编译器.对M atlab引擎程序的编译与M ex文件编译有所不同,并没有默认的选项配置文件,因此编译时必须用M ex命令的-f参数指定选项文件.选项文件名一般为3333eng mat op ts,前面的3号表示所安装的编译器.例如命令mex2f df60eng mat op ts1bat test1f or表明要编译文件test1f or,采用的选项文件为df60eng mat op ts1bat,对应于使用Co mpaq V isual Fortran 611编译器.尽管采用M ex命令进行编译比较简单,但如果程序规模很大,则应该充分利用Fortran编译器的集成编译环境,便于进行调试.此时需要生成静态链接库并进行路径设置.在M atlab安装目录\extern\ include\下有如下文件:libeng1def,libmex1def,lib2 mx1def,libmat1def和M atlab1def等,可以在DOS命令窗口下执行L ib命令生成相应的库文件,然后加入到所安装的Fortran编译器的库文件中即可.4应用实例实例1:Ch18r是一个Fortran应用程序,主要功能是从Pr ote m(加拿大GEON I CS公司生产的电磁系统)产生的1xyz文件中抽取各测点的测量数据,进行相应处理后形成1dat文件,从而能够通过surf2 er软件进行网格化,并形成测线的剖面图.如果输入了多条剖面数据,则可以按时间道抽取平面数据,进而形成各道的异常响应平面图.该程序通过长时间使用,操作简便、效果良好,但由于Fortran绘图功能较弱,在形成1dat文件后,必须借助Surfer, Aut oCAD等图形软件进行图件的生成和绘制,步骤较多,使用起来不够方便.现将该Fortran程序增加M atlab的入口函数,生成M ex文件,使其可以被M atlab直接调用,然后在M atlab中完成数据网格化并直接生成各种图件,操作步骤大为简化.Matlab 中网格化采用了griddata函数[3,4]Z I=gridda ta(x,y,z,X I,Y I,′v4′).最后一个参数为网格化方式,这里采用v4方式,以获得一种比较平滑的效果(图2).图2 TE M异常响应平面图Fig12 Plan of TE M abnor mal res ponse实例2:合成地震记录是地震勘探中一个重要的研究内容,制作方法是:根据所设定的地层模型,得到相应地层的波速和密度,依据下式计算反射系数R=ρ2V2-ρ1V1ρ2V2+ρ1V1.式中:ρ为地层密度;V为地层波速;ρV为波阻抗;各参数的下标表示该参数所描述的地层.通过时深转换可以得到随时间变化的反射系数序列,将其与选择的地震子波(如雷克子波)褶积,便可得到合成地震记录,数学表达式为f(t)=R(t)3G(t).式中:R(t)为反射系数序列;G(t)为地震子波;f(t)为合成地震记录.采用Fortran进行速度和密度数据的输入,并计算反射系数序列,然后通过M atlab的计算引擎调用M atlab的褶积函数,计算合成地震记录并显示合成结果(图3).图3 合成地震记录曲线Fig13 Synthetical seis mogram97第25卷 第1期 刘羽:Matlab与Fortran的混合编程及其应用5 结 论(1)利用M atlab AP I功能连接Fortran代码,可以在无须做大量改动的情况下,充分利用已有的大量Fortran程序资源,而M atlab强大的图形功能,也能很好地弥补Fortran这方面的不足,甚至还可以替代部分专用图形处理软件,从而使应用程序的功能更为全面、高效.(2)一般来说,利用M ex文件和M atlab引擎混合编程两种方式都能完成类似的工作,但由于各自特点不同,也应该根据实际情况加以选择使用.笔者的经验是:如果Fortran程序中有较多的交互输入,甚至输入的参数个数是动态的,则编写入口子程序会变得比较复杂,此种情况下,应多考虑采用M atlab引擎的混合编程方式;如果Fortran中要调用的M atlab函数较多,这些调用因为都要以字符串传递的方式进行,在编写上就不如直接在M atlab中编写方便,运行效率也相对较低,因此应考虑采用M ex文件的混合编程方式.参考文献[1]刘志俭.Matlab应用程序接口用户指南[M].北京:科学出版社,2000.[2]何强,何英.Matlab扩展编程[M].北京:清华大学出版社,2002.[3]李强,赵伟.Matlab数据处理与应用[M].北京:国防工业出版社,2001.[4]陈天伟.应用Matlab构造数字高程模型工具箱[J].桂林工学院学报,2003,23(4):453-456.Appli ca ti on of M i xed Programm i n g w ith M a tl ab and FortranL I U Yu1,2(11Institu te of Geophysics and Geo m atics,China U niversity of Geoscience,W uhan430074,China;21D epart m ent of E lectronics and Co m puter S cience,Guilin U niversity of Technology,Guilin541004,China)Abstract:T wo methods of M atlab and Fortran m ixed p r ogra mm ing are analyzed and intr oduced.The M atlab engine and the M ex files are used while the realizati on step s of the t w o methods are p resented.The advantage and disadvantage are discussed with a geophysical p r os pecting data visualizati on app licati on exa mp le.The anal2 ysis and the experi m ental result indicate that thr ough M atlab and Fortran m ixed p r ogra mm ing,not only the M at2 lab for m idable graph functi on and the rich engineering calculati on functi on can be used,but als o highly effec2 tive characteristic can be shown in the Fortran value operati on and the massive p r ogra m res ources can be used. Thus it can be shown that the p r ocess of p r ogra mm ing is highly effective and flexible.I f there are t oo many in2 teractive inputs in the Fortran,the M atlab engine m ixed p r ogra mm ing methods should be app r op riate.I f a l ot of M atlab functi on t o be called in Fortran,the M ex file m ixed p r ogra mm ing should be used.Key words:M atlab;Fortran;m ix p r ogra mm ing;interface08桂 林 工 学 院 学 报 2005年。
VB界面设计与FORTRAN数值计算功能的组合应用
( et rnho hj n nvrt o cnl y uhu3 4 0 ,Z eag, hn ) W sB ac fZ eagU i syf 7 hoo ,Q zo 2 0 0 hj n C i i e i  ̄ g i a
A b tac sr t I lu in t h r b e t tfrc mp e e ie a pl a in o n u fr s ci e m n b i ee ie rng a r s n ,i i n al so ot e p o l m ha o o r h nsv p i to fno — niom e t c on b a i rdg ngn e i tp e e t t s
df c l t e n a ayi a ou in o y a c e p n e u d rte fr e o vn e il ,a b i g y a c ac lt n s f r t o d i u t og ta n lt ls l t fd n misr s o s n e o c f i c o h mo i g v hc e rd ed n mi sc lu ai ot ewi g o o wa h h ma — c i e i tr cie i tra ea d c p b eo ac lt g c mp e o k n o d t n i d v lp d ta o t n me c l t o n s s u n ma h n n e a t n e c n a a l fc l u ai o lx w r i g c n i o e eo e .I d p s u r a h d a d u e v f n i s i me p we u o u i gf n t n o ota a g a et i lt h ir t n cr u t n e fb a u d rt emo i g la sb s d o ef i l o r lc mp tn u ci f r n ln u g o s f o F r mua et e vb a i i ms c so e m n e v n d a e n t n t e— o c a h o h i e
基于VB与Fortran的混合编程的网格结构计算机辅助设计的开发
收稿日期:2007-05-21作者简介:陶志雄(1978-),男,硕士研究生。
文章编号:1673-8993(2007)04-0007-04基于VB 与Fortran 的混合编程的网格结构计算机辅助设计的开发陶志雄1,简 政1,苏 卿2(1 西安理工大学水利水电学院,陕西西安710048;2 西安建筑科技大学土木学院,陕西西安710055)摘 要:综合VB 语言极好的界面开发和F ortran 语言强大的计算功能,混合编制了网架设计程序,既解决网架数据过多、计算复杂的问题,又提供了良好的人机交互界面,从而编制出高效的网架设计软件。
关键词:网架结构;混合编程;VB 语言;Fortran 语言;可视化;数据交换中图分类号:T U 201 4 文献标识码:ADevelopment of spatial grid structure computer aideddesign based on combined programming withVisual Basic and Fortran languagesTao Zhixiong,Jian Zheng,Su QingAbstract :In this paper,the excellent interface development function of VB language and the strong calculation function of Fortran language were combined for spatial grid structure design programming,this not only solved the problem of too much spatial g rid data and complicated calculation,but also provided friendly human computer interaction interface,thus the efficient spatial grid structure design softw are w as programmedKey words :spatial grid structure;mix ed language program ming;VBlang uage;Fortran language,visualization;data ex change随着计算机技术的发展,网架结构设计软件正向综合化、可视化、智能化方向发展;同时,由于近年来网架结构的飞速发展,新结构,新工艺的不断出现,软件的更新换代也明显加快。
Fortran90与VB混合编程技术的研究与实现
据类 型接 口混合 编程技 术翻 对 于结构 体变 量 、 构体 数组 及字 符 串等复 杂数据类 型接 口混合 编程 技术均 没 , 结 有涉及 到 , 至在 F R R N 9 甚 O T A 0系统 的帮助文 件 中也 没有 描述 。 者在设计 和编写 一个具 体应用 软件 时 , 笔 使 用 VB语 言编写 了软件可 视化 用 户界 面 , 用 A O完成 对数 据 库 的操作 , 过用户 界 面实 现 实时 数据接 收 采 D 通
当前 ,ot n0语 言在科 学 与工程计 算领 域得 到广 泛应 用 ,其 程 序的运 行速度 和运 行效 率是 任何其 他 Fra9 r 高级 程序设计语 言所 无法 比拟 的I Fra9 1 ot n0语言 具有强 大 的科学计 算和数 据处理 能力 , 在可 视化界 面设 】 。 r 但
于对 所 开 发 的应 用 软 件进 行 升 级 和维 护 。
关键 词 : 合 编程 ; 混 动态 链 接 库 ; 构 体数 组 传 递 ; 用 约定 结 调
中 图分 类 号 : P 7 T 24 文 献 标 识码 : A 文 章 编 号 :17 — 67 20 )4 07 -5 6 2 0 8 (0 80 - 0 6 0
计上 , 对其 他可 视化 程序 设计 语 言 ( V ) 相 如 B 来讲 , 面设 计 的 功能不 强 , 界 因而 不易 设 计 和开 发 与用 户进 行 可视 化交互 的应 用软 件 , F r a 0语 言的应用 受 到很 大 限制 。因此 , 使 ot n9 r 目前 在设计 “ 高端计 算 ” 用程序 时 , 应 为既 能发挥 F r a9 ot n 0语 言高 效的计 算能力 , r 又能使 应用程 序 的交互界 面友好 , 往往采 用 了混合 编 程来实 现 。 其方 法是将核 心计算 部分使 用 F ra 9 ot n 0语 言编写成 动态链 接 库 ( ya i Ln irr , E ) r D n m c ikLba D E 文件 , y 软件 的可 视化 界面部 分再 由其 他可视 化程 序设计 语言 来实 现 , 过 可视化 界 面上 的某 些命令 控 件来 调用 动态 链接 库 通 中的 F ra 9 ot n 0过 程完成 有关计 算任 务 。本文选 用 了 V sa B s 以下 简称 V ) r i l ai u c( B 设计 软件 可视化 用户界 面 , 并调用 F r a 9 o rn 0动态链 接库 以实现 混合编程 。 t
用VB和Fortran混合编程开发科学计算与作图软件
用VB和Fortran混合编程开发科学计算与作图软件
朱从旭;邓宏贵
【期刊名称】《计算机应用》
【年(卷),期】2000(020)004
【摘要】针对开发计算复杂又要求有良好人机界面的科学计算软件,充分利用VB 和Fortran的优势进行混合编程;对Windows环境下运行DOS外壳程序遇到的问题提出了方便实用的解决方法;并在VB中实现了将Fortran计算结果转化为曲线图.
【总页数】3页(P65-67)
【作者】朱从旭;邓宏贵
【作者单位】中南工业大学信息工程学院,湖南,长沙,410083;中南工业大学应用物理与热能工程系,湖南,长沙,410083
【正文语种】中文
【中图分类】TP314
【相关文献】
1.用VB与Fortran混合编程开发桥梁内力分析软件 [J], 武刚;朱尔玉
2.用VB和Fortran混合编程开发科学计算软件 [J], 张学胜
3.VB与FORTRAN、GrADS混合编程开发绘制降水分布图软件 [J], 张富龙;刘爽;兰明胜
4.VB与FORTRAN、GrADS混合编程开发绘制降水分布图软件 [J], 张富龙;刘爽;
兰明胜;
5.用VB和Fortran语言混合编程开发气象软件 [J], 杜文娟;李建东
因版权原因,仅展示原文概要,查看原文内容请购买。
VB与FORTRAN混合编程及在管网中的应用
V sa F ra 6 ( V 6 ) 编 译 成 Dya cLn i l ot n . C F . u r 5 5 n mi i k
视化界面设计 。 V 但 B的缺点在于运算速度 慢 , 不适 合 进行 大型数值计算 。如果能将 F T N与 V OR R A B语 言 结 合起来 , 则可 以充 分发挥它们 的优势 。这样 使用混
维普资讯
第2 5卷 第 3期
20 0 6年 6月
建 筑 热 能 通 风 空 调
Bul i gE eg i n n ry& En i n n d vr me t o
V0 -5 N . l o3 2
J n 2 o .6 9 u . o 69 — 9
文章编号 :0 30 4 ( 0 6 0 .9 . 10 .34 20 )3064
VB与 F ORБайду номын сангаасR AN 混合编程及在 管网中的应用
徐楠 王树 刚 李持佳 z王楠 ・
( 大连理工大学土木水利学院 ; 1 2哈尔滨T业大学市政环境工程学院 )
摘 要 : 本文论述 了 V B和 F R R O T AN两种语 言混合编 程的方 法 , 探讨 如何在 F R R N语 言 中建立 动态连接 O T A
F R R N 语言 编 制 ,远远 落 后 于 目前 流行 的基 于 O T A
VB调用Matlab制作的COM组件实现二者混合编程
4、Matlab中处理返回结果并使用它进行进一步计算或可视化等操作。
四、注意事项
在使用基于COM的VB与Matlab混合编程时,需要注意以下几点:
1、确保VB COM接口和Matlab代码之间的兼容性。这通常需要对两种语言进 行适当的转换和映射。
2、COM接口的创建和实现可能需要耗费大量时间和精力,因此需要仔细规划 和设计。
4.处理异常
在调用Matlab函数时,你可能会遇到各种异常情况,例如参数类型不匹配、 参数数量不匹配等等。为了处理这些异常,你需要在VB代码中使用异常处理机制:
result = myMatlabObject.YourFunctionName(input1, input2)
' Handle the exception here
1、创建Matlab COM组件
首先,我们需要创建一个Matlab COM组件。打开Matlab,编写你希望从VB 调用的函数,例如一个用于图像处理的函数。然后在命令窗口中输入以下命令以 创建COM组件:
这将打开COM工具箱。在“新建项目”窗口中,选择“COM库”,然后输入库 名和位置。接下来,添加你的Matlab函数到库中。
在这个例子中,如果myMatlabObject.YourFunctionName(input1, input2) 抛出一个异常,那么这个异常会被Catch块捕获,并可以进一步处理。
5.在VB中使用返回值 在你的Matlab函数返回值后,你可以在VB中使用它。例如:
在这个例子中,如果result不是Nothing,那么你可以进一步使用这个结果。 6.错误检查和清理
1、创建 MATLAB函数:首先
例如: function obj = MyClass(x) function result = add(obj, y)
通过动态链接库实现VB和Fortran的混合编程
利用 F r a o r tt n建立动态链接 库的步 o t n P we ai r S o
骤如 下:
① 在 F rrn P w rtt n开发 环境 下 , ot o eS ai a o 新建 一 个 工程 , 其类 型选 为“ y a i—Ln irr 并 命 D n m c i Lb ay , k 名工 程。编 写源 程序、 命名 , 插入工程或将一个只含有 函数 或子程 序的 F r a ot n程序加入到 P oet r rj 中。 c 编译 通过 即可 生成 D L。 此必须对被调用的函数或子程 L 在 序予 以声 明 , 以标 识这 些 函数 或子 程序 在所 生成 的 I中是可用的 。具体语法 如下 :
VB 6 0a d Fo ta i . n rr n va DLI. t n e c a g sd neva d t r n r si n t p e e ti t g a i e we nv s a ntra eo Daa i t r h n e i o i a at a sm so o i l m n n e r t m on b t e iu li e fc fVB
p e ln r c d r fl r e a p ia in s fw a e l ae tp o e u eo a g p l t o t r . c o
KEYWORDS h rd p o r mmig.da ai t r h n e.dy a cln i —n m rc lc lulto yb i r g a n t n e c a g n mi i k n g u e ia a c a i n,Fo ta rr n,VB
Fo r n y m i nk i ar rt a by D na c Li L br y 王文 轲 陈 情 郭忠: 每 黄 卡 玛
VB与FORTRAN混合编程的实现
造。
这种 方法 的总 的思 路是 , Fra 的源代 码分 将 or tn 成若 干个用 于计算 的 子程 序 或 函数 , 并编 译 生 成动 态链 接库 函数 , 建立 动态 链接 库 函数 的 Fra 的源 or tn
手 段 。同 时实 现 了 Fra 序 的 图形 化界 面 和计 or t n程 算结果 可视 化 , 而推 进 了科 学计 算 软件 的普 及和 从
推 广。
2 混 合 编 程
在 通 常 情 况 下 , F ra 在 o rn中 需 要 调 用 约 定 t A IS指令 ( A T IU E LA 或 T RB T S的 A IS选 项) 但要 LA , 根据情况 来 区别 对待 : ( 如是传 递 的是 可变数 目的参数 , Fra 1 ) 在 or t n过 程定义 中需要 V R IG选 项 , V A YN 在 B中的 D C A E E LR 语 言 中需 要用 C E L关键字 。 DC
( 2 )在 传 递 字 符 参 数 时 ,Fra 必 须 使 用 or tn A Y IU E T R B T S的 S E A L选项 , 以 它并 不 需 要 字 TCL 所 符 参 数 的 隐 含 长 度 。 因 为 S D A L也 是 小 写 的 TCL
Fra 名 称 , V orn t 从 B中 应该 用 小 写 来 引 用 Fra or t n子 程 序 的名 称 。 下面 的语句建立 了可 以被 V B调 用 的 Fra or tn示 例 函数 。 !建立 F ra or t n函数 的子程 序
Fortran与VB.NET的混合编程
S u n Y a t - s e n U n i v e r s i t y ,G u a n g z h o u 5 1 0 2 7 5, C h i n a )
Abs t r a c t :F o tr r a n l a n g u a g e h a s h i g h e x e c u t i o n e ic f i e n c y.I t i s wi de l y u s e d i n t h e ie f l d o f n u me r i c a l c l- a
V B相 比,V B . N E T具有快速简易地开发功能更强大 的 Wi n d o w s 程序 的优 点。剖析 了 V B . N E T通过 动态链 接库模
式调用 F o  ̄ r a n的混合 编程 ,针对变量 、字符 串、数组 、结构体 、结 构体数组等 情况给 出对应 的调用方 法 ,并给 出了典型示例。为开发集合 F o  ̄ r a n和 V B . N E T优点 ,兼具 高执行效率 和快速 简易 开发 能力 的软件提供技术支持。
mo r e p o we r f u l Wi n d o ws pr o g r a m. Mi x e d— l a n g u a g e p r o g r a mmi ng o f VB. NET c a l l i ng F o tr r a n t h r o u g h d y - n a mi c l i nk l i b r a y r mo d e i s s t u d i e d.I t g i v e s t h e c o r r e s p o nd i n g c a l l i ng me t ho d f o r v a r i a b l e,s t in r g,a r r a y,
Fortran 与 VB 混合编程
Fortran 与 VB 混合编程1 概述在DOS时代,许多水利专业程序用Fortran语言编制,随着WINdows时代的来临,面向对象的编程语言如VB、VC等已成为主流,尤其是VB以其简单实用成为许多水利工作者首选工具,而以前大量Fortran 程序重新编写,困难重重,充分利用前人程序资源,较好的解决办法是Fortran 与VB混合编程。
2 操作平台Fortran PowerStation 4.0,VB6.0(也可以是Visual Fortran,但本人手头没有,其接口约定不同,但类似)3 主要方法(1)利用动态链接库,实现多语言混合编程。
(2)VB直接调用Fortran执行文件。
4 方法说明4.1利用动态链接库方法:(1)在Fortran PowerStation 4.0下,编制可供VB调用的.dll文件,示例代码:subroutine forcx(a,b,c)!ms$if .not. defined(linkdirect)!ms$attributes dllexport :: HWJSVB!ms$endifinteger a,b,ca=b+cend(2)在VB下编写如下代码:Private Declare Sub forcx B Lib "dll.dll" Alias "_ FORCX @12" (ByRef a As integer, ByRef b As integer, ByRef c As integer)Sub callfor()Dim a as integer, b as integer ,c as integerB=1 : c=2Call forcx(a,b,c)EndAlias 的具体格式:“_函数名(全部大写)@字节数”,其中函数名是.dll中函数名,特别注意须全部大写,字节数指函数中的变量的字节总和,整形为4字节,共12字节。
4.2 直接调用执行文件法:(1)这是一种最简单明了的办法,很使用,不必修改原程序,接口可通过读取数据文件方法处理,VB中直接调用shell函数即可。
VC、VB与FORTRAN的混合编程技术及其实现
VC、VB与FORTRAN的混合编程技术及其实现
欧阳永忠;王瑞;陆秀平;申家双;王克平;刘传勇;侯世喜
【期刊名称】《海洋测绘》
【年(卷),期】2004(24)1
【摘要】在探讨高级编程语言之间混合编程技术的基础上,通过实例在Visual C + +6.0、Visual Basic 6.0和Fortran PowerStation 4.0开发平台上演示了VC、VB 和FORTRAN之间动态连接库(DLL)模式混合编程的实际应用,为使用不同开发平台的程序员和涉及知识产权保护的单位之间协作开发高质量的软件提供了技术途径.【总页数】6页(P54-59)
【作者】欧阳永忠;王瑞;陆秀平;申家双;王克平;刘传勇;侯世喜
【作者单位】海军海洋测绘研究所,天津,300061;海军司令部航海保证部,天
津,300042;海军海洋测绘研究所,天津,300061;海军海洋测绘研究所,天津,300061;海军海洋测绘研究所,天津,300061;海军海洋测绘研究所,天津,300061;海军海洋测绘研究所,天津,300061
【正文语种】中文
【中图分类】TP311
【相关文献】
1.Fortran 90与VB混合编程技术的研究与实现 [J], 李学哲;白云;陈国新
2.VB与Fortran混合编程技术及其在气象领域的应用 [J], 马玉峰
3.VC++与FORTRAN混合编程技术实现 [J], 梁科山;张云洲
4.VC与FORTRAN混合编程技术实现 [J], 周林立
5.VC与FORTRAN混合编程技术实现 [J], 周林立
因版权原因,仅展示原文概要,查看原文内容请购买。
用VB制作绘图程序
用VB制作绘图程序第一步,先构思要制作的程序的界面;第二步,运行Visual Studio,选择Visual Basic,制作Windows 程序,把名字改为huitu;第三步,在Form1中设计用户界面,把Botton、Panel拖放到Form1中;第四步,设置对象的属性,把Form1的text属性设置为绘图程序,把Botton1的text属性设置为圆形,把Botton2的text属性设置为长方形;第五步,编写代码,代码如下:Public Class Form1Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim g As Graphics = Panel1.CreateGraphicsDim pen1 As Pen = Pens.Blackg.DrawEllipse(pen1, 20, 20, 30, 30)End SubPrivate Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.ClickDim g As Graphics = Panel1.CreateGraphicsDim pen1 As Pen = Pens.Blackg.DrawRectangle(pen1, 20, 20, 30, 30)End SubPrivate Sub Form1_Load(ByVal sender AsSystem.Object, ByVal e As System.EventArgs) Handles MyBase.LoadEnd SubPrivate Sub Panel1_Paint(ByVal sender As System.Object, ByVal e AsSystem.Windows.Forms.PaintEventArgs) HandlesPanel1.PaintEnd SubEnd Class第六步,编译、运行、调试程序;第七步,制作安装程序,点击生成按钮,点击生成下的菜单生成,再点击发布,即可完成发布!生成程序两个文件:。
VC、VB与FORTRAN的混合编程技术及其实现
*
引
言
方面: (&) 充分利用现有的用其他语言编制的软件代 码, 提高软件代码资源的可复用性, 从而有效缩短软 件的开发周期。 (!) 开发出无法用单一语言实现的功能模块, 提 高软件的集成度和可操作性。 (#) 提高软件的执行速度和可维护性。 (*) 多个单位协同开发集成系统时, 各协作单位 通过约定数据接口, 独立开发各自独立的功能模块, 实现对技术秘密和数据秘密的保护。 混合编程一般有以下三种具体的实现模式: 第一种模式, 将各功能模块源代码在各自对应 的开发平台上编译连接成可执行代码, 然后在主执 行程序中通过外壳调用命令调用各个独立执行程 序, 主模块与功能模块之间的数据交换通过数据文 件来完成。 第二种模式, 利用目标文件即 6KM 文件, 将各功 能模块源代码在各自对应的开发平台上进行编译, 得到各自的 6KM 文件, 然后在主模块开发平上再对 这些 6KM 文件进行集成连接, 生成可执行文件, 各模 块之间的数据交换通过约定接口来实现。 第三种模式, 将各功能模块源代码在各自对应 的开发平台上编译连接成动态连接库, 然后在主模 块中通过约定的接口动态调用该功能模块。 以上三种混合编程模式中, 第一种模式实现最 为简 单, 其 技 术 层 次 为 最 低 级。 在 目 前 #! 位 主执行程序调用其他语言编 N,9L6;- 操作系统上, 制的功能模块时, 需要应用 N,9L6;- A:G 提供的进
第 !* 卷第 & 期 !""* 年 & 月
!"、 !# 与 $%&’&() 的混合编程技术及其实现
欧阳永忠& , 王 瑞! , 陆秀平& , 申家双& , 王克平& , 刘传勇& , 侯世喜&
用VB和Fortran混合编程开发科学计算软件
由VB程序启动它。计算结束后,结果显示在VB界面上。整 个运行过程中,Fort随n程序都在后台运行。VB和FoItE蛳间 的所有数据都通过磁盘文件进行交换,交换海量数据非常经 济,效率也非常高…。
利用VB中的sheu函数来启动Fortran应用程序,存在两 个问题:一是sheu函数以异步方式执行,该方式不能等待 Fortran程序结束丽将继续执行后续VB程序,使VB得不到 Fortmn程序运行结果而出错。二是VB运行于聊ND0ws平 台上,而Fortmn应用程序基于DOs平台。在WIND0ws平台 上运行DOs应用程序时,会退出唧ND0ws而进人D0s界 面,从而出现“黑屏”现象。因此必须解决这些问题¨o。
Private Const SYNCHRONIZE=&H100000
当sheⅡ(pathn咖e,[windowstyle])函数中windowstyle命 名参数取vbHide时,隐藏了外壳应用程序的窗口,从而避免
了“黑屏”现象。在waitF0rSindeObject函数中, dwMiⅡiseconds参数取一1,表示可以进行无限长时间的等待, 一直到外壳应用程序结束,再执行后续VB程序,从而解决了 外壳程序的异步运行问题。
ret=waitForSingleObject(pHarIdle,INFINl7I芭) ret=closeHandle(pHandle)
3 简单示例——数据排序
需要指出,广泛应用于固体力学、土力学、流体力学、热动 力学、电磁学领域的有限元程序是用For【ran语言编写的,并 且输入数据通过磁盘文件来实现,输出数据也以文本文件形 式保存。故可以这样设计:VB图形化界面接受数据输入,然 后启动FortraIl可执行应用程序进行计算,最后在VB界面上 输出计算结果、绘制曲线图。混合编程出色地完成了这些任 务,但这些Fortran程序都比较长,而且相当复杂,为将混合编 程原理叙述清楚,仅以排序做一简单示例。 3.1编写排序Fortran程序
VB和Fortran语言混合编程在结构动力分析中的应用
VB和Fortran语言混合编程在结构动力分析中的应用刘鹏; 蒲军平【期刊名称】《《浙江工业大学学报》》【年(卷),期】2010(038)001【总页数】5页(P102-106)【关键词】VB; Fortran; 混合编程; 结构; 动力分析; 数值计算【作者】刘鹏; 蒲军平【作者单位】浙江工业大学建筑工程学院浙江杭州310032; 浙江工业大学浙西分校浙江衢州324000【正文语种】中文【中图分类】O327; TP311对于数学力学中求解具有时变系数的微分方程问题,用解析的方法有很大的局限性且往往得不到解析解的形式,因此采用数值算法中的有限元方法就成为一种可选择有效途径.有限元程序一般采用的是Fortran语言编制,Fortran语言是一门适合科学计算和工程分析的程序设计语言[1],在结构分析、动力响应、优化设计等方面被广泛应用,积累了大量的Fortran子程序的源代码供大家开放使用.但是,在W indow s操作环境下,利用Fortran语言开发高效、友好的界面困难较大.近些年随着Visual Basic(以下简称VB),Visual C++,Visual C#等面向对象的编程语言大量出现,其界面设计、图形开发、数据库管理等功能都十分强大[2],目前已成为计算机编程语言的主流和未来发展方向.我们把两者结合起来,在W indow s环境下进行VB和Fortran混合编程,利用VB强大的界面设计和图形开发功能设计出友好的结构动力分析有限元计算平台,通过此平台在计算结构动力响应时调用Fortran程序进行科学计算,将计算结果以字符和动画的方式显示在VB界面上,开发具有较好的人机交互界面的结构动力分析有限元计算程序系统,实现了VB的可视化界面与Fortran强大的数值计算能力的结合.在VB中可以用Shell功能函数直接调用Fortran程序的*.exe可执行文件,Shell函数调用可执行文件的语句为:Shell(PathName[,WindowStyle]),其中PathName 为必要参数,表示要执行的*.exe文件名(包含路径);W indow Sty le为可选参数,表示在程序运行时窗口的样式.如果W indow Sty le省略,则程序是以具有焦点的最小化窗口来执行的,一般情况下,我们取它为vbNorm alFocus,即窗口具有焦点,且会还原到它原来的大小和位置.动态链接库(DLL)是可被其他程序或动态链接库调用的函数(过程)集合组成的可执行文件模块.Window s本身提供了大量的应用程序接口(API)函数,都是通过动态链接库机制来实现的.动态链接库之所以在W indow s中被广泛应用,是因为它除了具有静态链接库的功能外,尚有如多个应用程序共享一个动态链接库以节省内存和磁盘空间等许多优点.在Pow erStation4.0中,可根据需要将一组 Fortran函数或子程序放在一个程序中,创建成一个动态链接库,它本身不能运行,只能被VB等其它语言调用.具体实现步骤如下:先建立一个New Project Workspace,定义其类型为Dynamic Link Library,然后将一个只含有函数或子程序的Fortran程序加入到Project中,编译通过即可生成动态链接库.在Fortran程序中,被调用的函数或子程序必须予以声明,以标识这些函数或子程序在所生成的动态链接库中是可用的.具体语法如下:!MS$MYM ATTRIBUTES DLLEXPORT∷Nam eATTRIBUTES是Fortran PowerStation 4.0中的元命令,用于声明微软扩展属性.DLLEXPORT是上述属性之一,它的作用是声明该函数或子程序能被其他程序或动态链接库调用.Name为函数或子程序名.该语句应放在程序的变量声明处.在用VB调用Fortran动态链接库时,首先在VB的模块级或相应的Form中对被调用的动态链接库进行声明,语法如下:[Pub lic][Private]Declare Sub Name lib"libname"A lias"aliasname"[(arglist)]Declare语句的作用是声明对动态链接库中外部过程的引用[3].libname为动态链接库名及其路径;aliasname为被调用的过程在动态链接库中的别名,一般为_Nam e@n,n表示栈的大小,等于函数或子程序的参数个数乘以4;arglist为参数的变量清单.声明之后,VB中使用Call语句实现调用动态链接库中的函数或子程序,调用语句如下:Call Name(arglist),Name的意义同上.VB调用Fortran创建的动态链接库时,形参和实参的数据类型必须匹配,否则会发生错误.在Fortran 90中,它的数据类型和VB的并不是完全一一对应的,但我们常用于计算的整型和实型数据类型有着精确的匹配.VB调用Fortran动态链接库法是目前普遍采用的一种混合编程方法,它便于交互操作,执行效率高,软件的可维护性、可移植性和可复用性好,但是这种方法需要构造动态链接库,相对较为复杂,参数传递也比较多,需要具有一定的VB和Fortran编程基础.VB直接调用Fortran可执行文件法最为简单明了,但由于Shell是以异步方式执行的,这种执行方式不能等待Fortran程序结束而将继续执行后续VB程序,因此需要应用Window s API提供的进程操作函数[4]来解决程序异步执行和黑屏问题.但是这种方法的优点也是显而易见的,比如在整个运行过程中,Fortran程序都在后台进行,VB和Fortran间的所有数据都通过磁盘文件进行交换,交换海量数据非常经济,效率非常高.在VB利用Shell函数调用Fortran可执行文件过程中,Shell函数是以异步方式来执行的,也就是说,用Shell启动的程序可能还没有完成执行过程,就已经执行到Shell函数之后的语句.要成功实现同步调用,关键要实现能监视Fortran程序运行状态和等待它运行结束的功能,其原理如图1所示.当我们用VB的Shell函数来运行Fortran外壳程序时,可利用Window s API函数OpenProcess和CloseHandle或OpenProcess和GetExitCodeProcess来实现等待Shell程序的执行[5,6],从而解决Shell函数异步执行的问题.OpenProcess和CloseHand le函数是检测调用软件的运行情况,这两个函数的声明如下:也可用API函数OpenProcess和GetExitCodeProcess编写代码,来实现对Shell 程序执行的等待.并且可以将这些代码封装起来做成一个动态链接库以方便使用,此处不再赘述.对于利用Shell函数调用Fortran可执行文件,在启动外壳Fortran程序时会出现DOS运行界面,如果Fortran程序运行时间较短,那么界面会出现一闪的“黑屏”的现象,解决的办法是将Shell函数的第二个可选参数W indow Style设为vbHide,使外壳程序运行时窗口隐藏.随着交通运输业的迅猛发展,桥梁上行驶的车辆密度和荷载日益增大,桥梁结构形式日趋多样化和轻型化,桥梁的动力响应越来越多的制约着桥梁的安全和使用.对在移动车辆荷载作用下桥梁进行动力分析,能够使我们对桥梁的振动现象有着更为深刻的认识.基于上述需要研发了车辆在桥梁上行驶过程的实时监测软件——结构动力分析有限元计算程序系统(英文缩写SDAFEM),它可以实时了解车辆行驶过程中桥梁各处的动位移情况,而无需等待计算结束后再借助别的绘图软件处理计算结果.数据的输入输出由VB友好的交互式界面承担,原始数据(截面特性、单元信息、边界条件、计算参数等)可由VB界面直接输入或更改,计算功能则通过调用Fortran可执行文件得以实现.整个计算过程是通过调用Fortran可执行文件在后台处理,再将中间计算结果传回VB程序,利用VB可视化功能绘出动态的动力响应图等.本程序系统面向32位中文W indow s微机,适用于平面二维结构体系(例如多自由度、连续梁、桁架、刚架等),SDAFEM程序系统的主要功能如图2所示.本系统适用于Window s XP/Vista主流操作系统.所采用的研发工具是Visual Basic 6.0中文企业版,计算部分采用的是Fortran PowerStation 4.0,特点是软件执行较快,数值计算能力强,系统运行稳定、安全可靠,推荐桌面屏幕分辨率为1280×1024像素.作为一种可视化的动力分析系统,关键在于用户仅需输人极少量的结构描述信息,其余的工作由系统自动完成,并以直观的方式显示给用户,但同时又要保持用户对系统的控制,不是盲目的接受系统的输出.SDAFEM系统通过以上的方法,不仅解决了数据可视化问题,而且使VB和Fortran之间实现了数据的无缝连接,为系统的后处理创造了良好的条件.SDAFEM系统中Fortran和VB的数据交换如图3所示.应用SDAFEM程序系统对一受行驶车辆作用的三跨变截面连续梁桥进行了结构动力响应分析,详细的计算参数见文献[7]中算例3所示.通过应用这个可视化的界面平台,可以实现数据准备(前处理)、数值计算和结果显示(后处理)的无缝联接,可以显示当车辆通过桥梁的全程中桥梁所产生动位移、速度和加速度的情况,这样一来即提高了结果分析的效率,又使得结果更加直观,为减少篇幅,这里仅给出了车辆在行驰过程中桥梁振动所产生的加速度动态响应曲线见图4所示.通过VB与Fortran可执行文件的结合,一方面充分利用了Fortran的代码资源,避免了重复编程和资源浪费,节约编程时间,另一方面保留Fortran的数值计算优势,并使程序具有友好的前后处理可视化界面,克服了两种语言各自的局限,实现了数值计算的可视化.以结构动力分析有限元计算程序系统(SDAFEM)为例,介绍了VB和Fortran混合编程方法中VB与Fortran的接口、VB调用Fortran编译的可执行文件,以及shell函数异步执行和“黑屏”的解决方法.对SDAFEM 系统的功能、运行环境、操作流程、数据结构等进行了阐述,分析并解决了在前后处理界面实现过程中的遇到的一些典型问题.完成的软件具有使用简捷方便、自动计算并处理数据、自动绘制动态动力响应图的功能,提高了结构动力分析工作中在数据处理时的效率.【相关文献】[1]彭国伦.Fortran 95程序设计[M].北京:中国电力出版社,2002.[2]郑海春,谢维成.Visual Basic编程及实例分析教程[M].北京:清华大学出版社,2007.[3]殷国锋,周志芳.用 DLL实现 V isual Basic 5.0与 Fortran PowerStation 4.0的接口[J].工程地质计算机应用,1998,11(4):19-21.[4]朱从旭,邓宏贵.用VB和Fortran混合编程开发科学计算和作图软件[J].计算机应用,2000,20(4):65-67.[5]王旭.M icrosoft Window s 3.1程序员参考大全(二)函数[M].北京:清华大学出版社,1993.[6]常斌,李宁,黑新宏.工程计算软件开发中Fortran混合编程的关键问题分析[J].计算机应用,2003,23(6):56-58.[7]蒲军平,汪小超,刘鹏.多跨变截面连续梁桥在车辆通过时的振动分析.中国公路学报[J],2009,22(1):66-71.。
怎样在VB程序中调用Fortran程序?
怎样在VB程序中调用Fortran程序?摘要:本文介绍了如何通过DLL实现VB5.0和Fortran PowerStation4.0的接口。
该方法为编制Windows95下的数值计算事件驱动程序提供了一条方便的途径。
关键词:动态链接函数子程序声明1 引言众所周知,Fortran语言自从50年代问世以来,一直是数值计算领域所使用的主要语言,以往大量的科学与工程计算程序都是在DOS 下用Fortran语言编写的。
Microsoft公司推出的Windows95和WindowsNT下的32位的Fortran PowerStation4.0(以下简称FPS4.0)是一种功能强大的Fortran集成开发环境。
它几乎完全兼容Fortran90和Fortran77标准,并提供了与当今流行的Windows95的接口。
利用FPS4.0和Windows其他编程工具(如VisualC++和VisualBasic 等)能很容易开发出Windows95下的Windows事件驱动程序。
在Windows的诸多编程工具中,VisualBasic以其简单易学、功能强大等优点而广受非计算机专业人员欢迎。
经过一段时间的探索,笔者成功地把FPS4.0和VisualBasic5.0(以下简称VB)通过DLL技术结合起来,编制出Windows95下的Windows事件驱动程序。
这样使得应用程序既具有Windows环境图形用户界面的友好性,又能充分利用Fortran原有的丰富资源(如大量先前开发的DOS下的科学与工程计算程序等)。
本文的基本思路是用VB设计用户界面及控制程序,而将计算用Fortran程序通过FPS4.0编译成DLL,并由VB调用。
它们之间的数据交换通过参数传递来实现。
2 用FPS4.0创建DLLDLL(动态链接库)是可被其他程序或DLL调用的函数(过程)集合组成的可执行文件模块。
Windows本身提供了大量的应用程序接口(API)函数,都是通过DLL机制来实现的。
通过动态链接库实现VB和Fortran的混合编程
通过动态链接库实现VB和Fortran的混合编程
王文轲;陈倩;郭忠海;黄卡玛
【期刊名称】《电脑开发与应用》
【年(卷),期】2002(015)002
【摘要】论述了Fortran和VB两种语言混合编程的基础,介绍了如何通过DLL实现VB6.0和Fortran的接口,通过参数传递实现其数据交换,实现了VB的可视化界面与Fortran强大的数值计算能力的结合,满足了大型应用软件的实现过程中系统综合任务的要求.
【总页数】3页(P22-23,28)
【作者】王文轲;陈倩;郭忠海;黄卡玛
【作者单位】四川大学,成都,610064;四川大学,成都,610064;四川大学,成
都,610064;四川大学,成都,610064
【正文语种】中文
【中图分类】TP3
【相关文献】
1.Fortran 90与VB混合编程技术的研究与实现 [J], 李学哲;白云;陈国新
2.利用动态链接库实现C++与VB的混合编程 [J], 朱荟桥
3.通过动态链接库实现VB和Fortran的混合编程 [J], 王文轲;黄卡玛;陈倩;郭忠海
4.Fortran和VB混合编程在场地剪切波速测试中的实现 [J], 安辉;赵昌朋;杨明爽;李丽
5.VB与FORTRAN混合编程的实现 [J], 马占良;戴升;白彦芳
因版权原因,仅展示原文概要,查看原文内容请购买。
VB与Visual Fortran混合语言编程及其在物探化探数值计算中的应用
VB与Visual Fortran混合语言编程及其在物探化探数值计
算中的应用
汤洪志;周华中;胡文平;周亚东
【期刊名称】《物探化探计算技术》
【年(卷),期】2002(024)001
【摘要】作者在本文中详细介绍了VB与Visual Fortran(VB\VF)混合语言编程技术,尤其是对怎样用VB语言调用Fortran动态连接库(DLL)进行了详细的说明.将VB\VF进行混合语言编程一方面可以达到这两种语言的优势互补的目的,另一方面可以再利用前人留下的大量成熟的Fortran程序,避免了重复编程和资源浪费,节约了大量编程时间.混合语言编程在物探化探数值计算中是一种很有前途的编程方法.
【总页数】6页(P71-76)
【作者】汤洪志;周华中;胡文平;周亚东
【作者单位】华东地质学院,江西,抚州,344000;华东地质学院,江西,抚州,344000;华东地质学院,江西,抚州,344000;华东地质学院,江西,抚州,344000
【正文语种】中文
【中图分类】TP311.1
【相关文献】
1.Visual C++与Fortran混合编程及Matcom绘图在空调负荷计算软件中的应用[J], 顾小松;王汉青
2.VB和Fortran混合编程在工程计算中的应用 [J], 李险峰
3.基于VB和Fortran语言混合编程的滑动轴承性能分析的可视化研究 [J], 崔晓康;吴超;吴溢华;李立伟;吴兰锋
4.VB和Fortran语言混合编程在结构动力分析中的应用 [J], 刘鹏; 蒲军平
5.Fortran与VB混合编程及其在流动数值模拟可视化技术中的应用 [J], 徐林春;赵明登;童汉毅
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
201Xt"#3R)456
1 ’
[.
5 %1 $%$&’ 7/ 3 . 6 3
%($’/ 5 3 ,8 ,8 "#
n 7
^ ! - ; 19 "#+,01$ ST56 3 R 2U4-i56VWXYB AZF[ )\8 ]^ s$ _ Xt "#PC?RSTUVjkgh 0a b co ‘ 4 & 4 8Xt"#G, $ ! * "# 23 7S/_ Mc L dV j kG)Se !"# f# w "# ghf# x$ K Ld [ ij ! "#f#kKl?r[fmnbSopVqK SopVrsS"#Vtu[bSM?‘a Vvbs$ -w !"# f #7K Ld[G, !"# "# 237L_ ‘a bc @A$
ghij klmn !" o%pq%rs%tBuvw xyz o%pq%rs%tBuvw x|}y~x 2
{kF
#$%
<<
计算机应用
年
!"#$ % &’()*+,-.+, "#23 456+,76 )*/01 "#8 9:;<=2> ?@$ A &EFG, B)CD HI "#&B.J H I ! " # K HIG, !"#LM? XK NO PCQ L?RSTUVRW$ YZ [K HIG, "#8 bc \<]^/_ ‘a $ Q defgh-ijk$ lmn‘N" opq gh r s X t " # ’ ( G , j k$ "#xyz uvXtN"w {7Y | 0 1 X t N" < ] ‘a}~N" e w x$ W $ -ifK n B 2 ! "! # $%$&’ =2 Xt!"# $ o A B n$ o Xt!"# w- H I ! ? R S T U V R W x$ A X K ( ! " # 0 1 " # ; $ % o ) N,&’$01E:Xt!"# *e rs 23$ Q ( ) K [,=2 -Z . X+)
8
’k m([:; l(< / Y 3 ) " # $ : 3 .;4 " # " $ $ : 3 / " $ ’8 ALm([ " " $# " $ $ # * ! + ’m@m([n_@ op # qd>[F
作者: 作者单位: 刊名: 英文刊名: 年,卷(期): 被引用次数: 朱从旭, 邓宏贵, ZHU Cong-xu, DENG Hong-gui 朱从旭,ZHU Cong-xu(中南工业大学信息工程学院,湖南,长沙,410083), 邓宏 贵,DENG Hong-gui(中南工业大学应用物理与热能工程系,湖南,长沙,410083) 计算机应用 COMPUTER APPLICATIONS 2000,20(4) 13次
KefghHA
3 2
’>’8[ " # 5 5$
i* B $ j k e f g C D E O B $ jkGHE lmn op5 mn ‘aq# r3Z[s 5 KDd tu"vwx"# ~ 4I ~ = I ! # ~ 5 ~ z ’
实现
外壳程序的同步运行
! " # $% & #$0 #$ ’()*+,-%./ 12 3456/7389:;2 <=>?7389
@A%.B& #$ ’C)*+,-D E F %& G #$ ’(HIJG #$%KLMNO/ G #$P)2 QRS%TUQVWXK Y2 Z[\J] #^% G #$_KS‘\J2 ab3456_c]de fJ2
$+! $%$&’ $%$&’ 2 - / & 0 B . / !% * 00 1 $+! %1 1 ’ %($’ 2 - / ^ & , B * . / . / $ . 1 $+! Z ’%(.1 %%$21 . - ’ ’$1 , ’%(.1 %%$21 . 3 4 4/ ’ ’$1 3 ) 4
m([:3d*F# 3412 ( M N [>[ zP S , 12
H&
% & % & " %B&
P-212~ 5 7 G;#
o #} $ % & 5 # ==> # " > $
=>
? <)
2G; %&) Q B
@ < -./.01=< ) 7 : $
& ! " # $ % ’5 " # $ Y d’F # i*c k-dF
./#
*d!" 234 =# 5 / 8F9
* F[ #0 < < w/
1
[ # 4 52 @2 6 [ 7 ’ 8 @78 E 7
789m([B $[ :; 12 * 52>? A@m, B )
K F X B " # | " G ) K wxHyI 7 J O KLF %" wx 5 63RMNO P +,X B "# G,@AE: %" wxbc w XB" #\M?xQ+, wxHy76"#$ 9:3 R ;[,56.
00,F %$%’ Xt"#RHy 6: / 8 9 3 8 9 : - *’ 5 " 7 Xt"# / 8 8 9 ,F %" 6 9 7 ,KLNOXB"#G,@A 1* . ! 00
#
CDEF I
B $@GHE
#
LM/0 VW
K JI N1BMGMD$OPQ6R S @B ]
$
$B $( ^_‘a#
B $
b
c
2 0 9 ’de[ 5 1 8- " $ ’() [*8f8CD 2 9 # : 3 / " $ * # Bgh /imj <w
B B
+,
!"# # * -./01234567* -;<= ?@A
$ B $
’HI -./.01 3412 # BXY - 6R 74 . " ! 2 $ ]8^_ ’& . Z[\,12 ( 8* ’\,12]8‘aMKL [ ) [ ) ( # $" # $ ’ " # $ " # $ # * ’d ,,, - 5) 74 ’d " 67 +# K K\aefg ut" " U $ # Hb 12 ’$c
* ,
Xt"# , 8 9 4- : 8 9 : - 4- 4- 4’%(.1 %%$21 . - 4- 4- ! - ’ ’$1 Xt"# ,01 8 9 23 ! ,‘a}~N"yz
>pq G, Xt 78 "# ! - 3 R01 " ! ; 19 #+, ! gh 1.. ’(+,jk 9:3R ;[,<56w x$
" " %" 6 + 5 7 , =B >?Xt"#G,@A 5 5 . bc 6 XB"#N"C 7 , 5 & 5 3 ! 6 - 5 7 ,bcDE"#yz 5 # ’ 5 3 $ ,XB"#+KG, %" 3 $ " 1 ,XB"#G,23 %" 3 1 # 5 1 "
第
卷第 期 年 月
计算机应用 78( ’ 889&
9: 6 # : 8 : 6
朱从旭 邓宏贵 中南工业大学信息工程学院 中南工业大学应用物理与热能工程系 湖南 ・ 长沙( 湖南 ・ 长沙(
) )
针对开发计算复杂又要求有良好人机界面的科学计算软件, 充分利用 和 对 环境下运行 外壳程序遇到的问 的优势进行混合编程; 题提出了方便实用的解决方法; 并在 中实现了将 计算结果转化为曲线图。 科学计算; 混合编程; 外壳程序
HI CD
! * V " 0 2 ; # 4) 0 2 ; # 0 ; # 0 ; $ < 0 ; : < 0 ; : < 0 2 ; 2) < 3 0 3 /4 rsGmt ’6 " < # < $ " # $ # *74 # ’ u/$%4>mF@ E efvwqx 8 2) 2) 3 /4 CyXzC # 35>CzD ~ ’ " 5 {| ~ 5 $ ; 3 2 ( 3 : ( 3 :! ; 8 2) < 3 : < 3 : < 3 F Y :y ’}H t 8