VB与Fortran的混合编程Word文件下载.docx

上传人:b****1 文档编号:4915453 上传时间:2023-05-04 格式:DOCX 页数:10 大小:18.30KB
下载 相关 举报
VB与Fortran的混合编程Word文件下载.docx_第1页
第1页 / 共10页
VB与Fortran的混合编程Word文件下载.docx_第2页
第2页 / 共10页
VB与Fortran的混合编程Word文件下载.docx_第3页
第3页 / 共10页
VB与Fortran的混合编程Word文件下载.docx_第4页
第4页 / 共10页
VB与Fortran的混合编程Word文件下载.docx_第5页
第5页 / 共10页
VB与Fortran的混合编程Word文件下载.docx_第6页
第6页 / 共10页
VB与Fortran的混合编程Word文件下载.docx_第7页
第7页 / 共10页
VB与Fortran的混合编程Word文件下载.docx_第8页
第8页 / 共10页
VB与Fortran的混合编程Word文件下载.docx_第9页
第9页 / 共10页
VB与Fortran的混合编程Word文件下载.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VB与Fortran的混合编程Word文件下载.docx

《VB与Fortran的混合编程Word文件下载.docx》由会员分享,可在线阅读,更多相关《VB与Fortran的混合编程Word文件下载.docx(10页珍藏版)》请在冰点文库上搜索。

VB与Fortran的混合编程Word文件下载.docx

跟一般的Fortran项目相似,首先要创建一个dll项目,具体步骤如下:

点击File——New,在弹出的new对话框中选择Projects项下的DynamicLinkLibrary,在右侧ProjectName下面的文本框中输入项目名称,在Location下的文本框中选好路径之后点击Ok,这样我们就创建了一个空的dll项目文件。

2)在dll项目中添加文件

在刚才创建的dll项目中添加一个空文件,这跟普通的Fortran项目中添加文件的方法一样。

点击file——new,在弹出的new对话框中选择Files项,在列表框中选择文件类型(单击选中即可),一般选择FortranFixedformatSourceFiles(固定格式源文件)或FortranFreeformatSourceFiles(自由格式源文件),在右边File标签下的文本框中输入源文件名,点击OK,一个空的源文件就建好了,接下来可以在里面编写Fortran源程序了。

3)创建子程序(过程)和函数

Dll文件是一种特殊的可执行文件,在其源程序中没有主程序,而是一个或多个子程序或函数,我们通过调用这些子程序和函数来完成一些特定的任务。

在Dll项目中创建子程序和函数的方法跟一般Fortran项目文件中的没有太大的差别,只需在子程序或函数开始时加入如下一些微软扩展属性编译伪指令即可:

!

MS$attributesdllexport

MS$attributesalias

MS$attributesvalue

MS$attributesreference

例如,如果要编写一个计算双精度实数加法的子程序,子程序名为subplus,输入参数为a和b,输出参数为c,则完整的源程序可以这样写:

subroutinesubplus(a,b,c)

MS$attributesdllexport:

:

subplus

MS$attributesalias:

'

subplus'

subplus

MS$attributesvalue:

a,b

MS$attributesreference:

c

real(8):

a,b,c

c=a+b

return

endsubroutinesubplus

一般情况下我们将输入参数定义为传递数值方式,而将输出变量定义为传递地址方式。

像这样添加一些子程序函数,然后可以将他们编译和生成dll文件(快捷键是F7)。

之后在该项目文件目录下的debug文件夹中可以找到这个以项目名称命名的dll文件,我们可以在VB环境中调用它。

四、VB2005中对动态链接库的调用

VB对动态链接库的调用如同对普通子程序或函数的调用,在调用之前必须先对Dll中的子程序或函数声明。

声明格式如下:

[Public|Private]DeclareSub|FunctionNameLib“Libname”[Alias“aliasname”][([arglist])]

例如在C盘根目录下有一个名为mathfunction.dll的动态链接库,我们对这个库中名为subplus的子程序的声明如下:

PublicDeclareSubsubplusLib"

C:

\mathfunction.dll"

(ByValaAsDouble,ByValbAsDouble,ByRefcAsDouble)

在声明之后这些函数或过程就可以向普通的函数或过程一样在VB环境下调用了。

五、实验内容

用Fortran编写一个Dll文件,其中包含计算两个双精度实数加、减、乘、除的过程和函数,而后在VB环境下设置简单的界面,通过调用这些过程和函数来完成两个输入双精度实数的加、减、乘、除运算,并将计算结果显示出来。

1、Fortran中创建一个名为mathfunction的Dll项目,在项目中添加一个名为mathfunction的固定格式源文件,添加如下代码:

*************subroutine********************

subroutinesubsubtract(a,b,c)

subsubtract

subsubtract'

subsubtract

c=a-b

endsubroutinesubsubtract

subroutinesubmultiply(a,b,c)

submultiply

submultiply'

submultiply

c=a*b

endsubroutinesubmultiply

subroutinesubdivide(a,b,c)

subdivide

subdivide'

subdivide

c=a/b

endsubroutinesubdivide

而后在项目中另添加一个名为mathfunction2的固定格式源文件,添加如下代码:

*************function********************

functionfunplus(a,b)

funplus

funplus'

funplus

a,b,funplus

funplus=a+b

endfunctionfunplus

 

functionfunsubtract(a,b)

funsubtract

funsubtract'

funsubtract

a,b,funsubtract

funsubtract=a-b

endfunctionfunsubtract

functionfunmultiply(a,b)

funmultiply

funmultiply'

funmultiply

a,b,funmultiply

funmultiply=a*b

endfunctionfunmultiply

functionfundivide(a,b)

fundivide

fundivide'

fundivide

a,b,fundivide

fundivide=a/b

endfunctionfundivide

编写好源代码后编译生成Dll文件。

随后我们会在该项目所在目录下的debug文件夹中找到这个名为mathfunction.dll的文件。

将这个Dll文件拷贝到C:

\WINDOWS\system。

2在VB2005中新建一个名为vb_fortran的WindowsApplication项目,设计界面,添加三个Label,三个Textbox和四个Button,

在代码编辑器中输入以下代码:

PublicClassForm1

PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click

DimaAsDouble

DimbAsDouble

DimcAsDouble

a=CDbl(TextBox1.Text)

b=CDbl(TextBox2.Text)

'

Callsubplus(a,b,c)

c=funplus(a,b)

TextBox3.Text=c

EndSub

PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click

Callsubsubtract(a,b,c)

c=funsubtract(a,b)

PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.Click

Callsubmultiply(a,b,c)

c=funmultiply(a,b)

PrivateSubButton4_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton4.Click

Callsubdivide(a,b,c)

c=fundivide(a,b)

EndClass

上面的代码也很简单。

代码中将对过程的调用注释掉了,因为这里对过程和对函数的调用结果是一样的,任选其一都可以,注意调用的格式就可以了。

在项目文件中添加一个模块文件,输入以下代码:

ModuleModule1

PublicDeclareSubsubplusLib"

mathfunction.dll"

PublicDeclareSubsubsubtractLib"

PublicDeclareSubsubmultiplyLib"

PublicDeclareSubsubdivideLib"

PublicDeclareFunctionfunplusLib"

(ByValaAsDouble,ByValbAsDouble)AsDouble

PublicDeclareFunctionfunsubtractLib"

PublicDeclareFunctionfunmultiplyLib"

PublicDeclareFunctionfundivideLib"

EndModule

3保存并编译项目文件,然后执行文件。

程序运行时,在文本框textbox1和textbox2中输入两个参数,通过button控件对其进行某种数学运算操作,则在文本框textbox3中会正确的显示出结果来。

要注意的一点是,如果mathfunction.dll没有拷贝到C:

\WINDOWS\system,程序运行时会提示出错。

当然也不必一定要将mathfunction.dll拷贝到C:

\WINDOWS\system,只需在模块文件中声明函数或过程时在库文件名前加上完整的驱动器名和路径即可。

当然还有另外一种方法,就是直接将Dll文件拷贝到VB项目所在目录下的bin\Debug文件夹中。

六、结论

实践表明,VB和FORTRAN混合编程技术,为软件开发工作者开发具有良好运行界面并具有精确、高效运算功能的软件系统提供了技术支持,为充分利用现有优秀的FORTRAN程序代码资源,为不同单位之间协作攻关,以及使用不同编程工具的软件设计人员协作开发可靠高效、界面友好的软件系统提供了技术途径。

软件开发人员在可视化编程中可以调用各种其它语言编写的动态链接库,但在调用过程中须注意两种语言间的调用约定的协调,包括标识符命名、参数传递方式、参数数据类型、参数在堆栈中的排列顺序等,以及动态链接库的导出和导入声明,从而成功地实现两种语言的混合编程。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2