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$endif integer a,b,c a=b+c end (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 integer B=1 : c=2 Call forcx(a,b,c) End Alias 的具体格式:“_函数名(全部大写)@字节数”,其中函数名是.dll中函数名,特别注意须全部大写,字节数指函数中的变量的字节总和,整形为4字节,共12字节。 4.2 直接调用执行文件法: (1)这是一种最简单明了的办法,很使用,不必修改原程序,接口可通过读取数据文件方法处理,VB中直接调用shell函数即可。 Shell(pathname[,windowstyle]) Shell 函数的语法含有下面这些命名参数: 部分 描述 pathname 必要参数。Variant (String),要执行的程序名,以及任何必需的参数或命令行变量,可能还包括目录或文件夹,以及驱动器。 Windowstyle 可选参数。Variant (Integer),表示在程序运行时窗口的样式。如果windowstyle省略,则程序是以具有焦点的最小化窗口来执行的。 windowstyle 命名参数有以下这些值: 常 量 值 描 述 vbHide 0 窗口被隐藏,且焦点会移到隐式窗口。 VbNormalFocus 1 窗口具有焦点,且会还原到它原来的大小和位置。 VbMinimizedFocus 2 窗口会以一个具有焦点的图标来显示。 VbMaximizedFocus 3 窗口是一个具有焦点的最大化窗口。 VbNormalNoFocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。 VbMinimizedNoFocus 6 窗口会以一个图标来显示。而当前活动的的窗口仍然保持活动。 例如:call shell(“c:\windows\notpad.exe”,1) 后记:因时间仓促,以上仅给出基本方法说明,希望能给大家提供一种思路,如有不当之处希望同仁指出,谢谢。

评论