论文部分内容阅读
摘 要 随着科学技术的不断进步与发展,编程技术在软件开发中发挥着越来越重要的作用,在原来的软件开发过程中,通常采用FORTRAN语言来进行软件所需的程序的编制,但是随着科学技术以及计算机技术的快速发展,VC++语言的适用范围不断扩大,在自身不断发展的同时也为软件开发奠定了坚实的技术基础。在综合运用多语言编程技术的基础上,也把软件开发推向了一个新的水准。当前对于多语言编程技术在软件开发中的应用进行探讨和研究具有重要的现实意义。本文将首先介绍动态链接库技术,再对多语言编程技术进行介绍,希望给读者一定的启发。
关键词 多语言编程技术 软件开发 应用
中图分类号:TP312 文献标识码:A
1 动态链接库技术
动态链接库的英文翻译是Dynamic Link Library,因此动态链接库又叫DLL,在DLL中通常可以包含很多的代码和数据,而这些代码和数据可以同时被多个程序都是识别并使用,从而实现了各个编程技术的动态链接。DLL作为一个不可执行文件,同时提供了一个对普通程序的代码进行识别和调用的函数,使得多个程序可以在相同的时间段内访问和使用同一个代码。DDL文件一般都会带有.dll这样的扩展名,因此也可将DLL作为一种磁盘文件来看待,在这个文件中包含了所需的全部数据、服务函数以及其他资源,DLL模块也正是通过这些函数和数据资源实现动态链接以及提供服务。在动态链接库进行动态链接之前必须与相应的声明函数或是引入函数作为引导,否则就不可以实现程序的动态链接。比如在DLL代码中必须有像__declspec(dllexport) int MyFunction(int n);这样的导出函数以及像__declspec(dllimport) int MyFuncition(int n);这样的输入声明函数,当然仅仅拥有输入和输出两种声明函数是不能将其他程序连接到DLL文件上的,还需要其他的调用函数的配合。
2 多语言编程技术
在软件开发设计的过程中,如果仅仅使用一种或是很少的编程程序是不能将软件的实际功能完全实现的,因此多语言编程技术满足了软件设计多种编程语言的需要,也为多种编写代码实现链接提供了可能性。但是如果多种编程语言混合在一起,若想保证原来各种编程的运行速度以及整体的运行效率,对于多语言编程技术的首要要求就是具有一定的调用规则,主要包括命名规则、堆栈的使用等等,这些都是多语言编程得以实现的基础,也可以说是关键性的问题。以下将对多语言混合编程的函数调用规则以及数据结构作简要的分析。
2.1 调用规则
不同的语言编程,其程序类型也不尽相同,因此多语言编程技术的调用规则还需要满足不同的程序类型需求,比如C++语言常用的调用函数是FUNCTION函数。函数的调用规则决定了函数下一阶段的运行,它直接影响变量的传递和接受,还会对变量的顺序产生一定的影响。因此在一些类型的语言中,需要设定特定的函数进行转换的声明。另外调用规则还和函数的数据传输以及数据的传输形式具有一定的关联性,比如传递的是一个数值还是地址都和调用规则有联系。
2.2 字符转换
一般情况下,在C语言中字符出现的形式主要以指针为主,另外在C语言中的字符传递方式和地址的传递方式相同,但这并不包括字符长度的传递。而一般在C语言中都以字符‘\0’作为每一行的结束符,但是在一些其他的编程语言中,有的语言是直接不具有结束字符,比如在FORTRAN语言中就没有结束符,因此要想实现C和FORTRAN之间字符的传递,可以直接将字符转化为C字符或者是直接编写相应的程序接收字符,后者也可以实现在进行字符转换和传递的同时进行字符长度变量的传递。
3 多语言编程的实现
3.1 在C中调用FORTRAN的动态链接库
在DLL文件中的函数会根据相对应的符号名或是整数值进行函数表的归纳,当DLL引出一个符号时必须使用相对应的符号进行引出,将这些符号统称在一起就叫做符号的引入。在FORTRAN语言中,DLL用户可以直接通过文件的属性找到与之对应的函数或是代码,从而实现函数的声明。将一些类似的代码或是数据和多个函数进行链接之后就会生成所需要的test.dll和zc.dll文件。
当实现动态链接之后,接下来所要考虑的就是如何进行动态链接库的使用。一般情况下,无论是.LIB文件还是.DLL文件都采用隐式连接或是静态连接的方式,因此当有应用程序访问DLL文件时,动态链接库必须存在该程序的目录。这样就可以直接避免出现链接库路径连接错误。在实际的程序设计和软件开发中,采用动态联编的方式来实现链接库的调用比较多。
3.2 在FORTRAN中调用C的动态链接库
在实际的算法运行过程中,由于一些算法或是正反演算法的迭代使用和计算,这就对数据的传输和处理带来影响,并不是所有的数据结果处理都很精确或是合理,严重时还会导致算法或是整个编程运行停止,因此对于一些重要的参数或是函数进行监控室非常必要的。在VC++进行调用算法动态链接库时,如果将链接运行的信息即时显示在相关屏幕上就可以方便对程序运行工程的判断和分析。在VC++中可以编写几个控制动态链接库的函数,这些函数的声明也可以作为FORTRAN算法的引出函数,这时候在运行FORTRAN算法动态链接库的同时也可以将算法的信息显示给VC++的应用程序的状态窗口,根据窗口显示的函数返回值,用户就可以实现对于动态链接库的实时控制以及在FORTRAN中调用C的动态链接库。
4 结语
尽管当前编程技术日新月异,但是在系统或是软件设计中如何将这些云烟编程技术进行综合运用或是实现各个语言程序的相互连接问题,仍是当前在软件开发中仍需要考虑的问题。而在研究中发现,DLL作为一个可以由多个程序同时使用的代码和数据的库,实现了多语言编程技术的相互连接,实现了资源共享,是实现多语言编程技术在软件开发中的应用的基础和前提。
参考文献
[1] 杨小锋,陈艳燕.智能卡中JNI技术的应用实现[J].浙江师范大学学报(自然科学版).2005(03).
[2] 周涛,郭占元,郭向荣.FORTRAN与C#混合编程在土木工程计算中的应用[J].山东交通学院学报.2009(01).
[3] 汤洪志,周华中,胡文平,周亚东.VB与Visual Fortran混合语言编程及其在物探化探数值计算中的应用[J].物探化探计算技术.2002(01).
关键词 多语言编程技术 软件开发 应用
中图分类号:TP312 文献标识码:A
1 动态链接库技术
动态链接库的英文翻译是Dynamic Link Library,因此动态链接库又叫DLL,在DLL中通常可以包含很多的代码和数据,而这些代码和数据可以同时被多个程序都是识别并使用,从而实现了各个编程技术的动态链接。DLL作为一个不可执行文件,同时提供了一个对普通程序的代码进行识别和调用的函数,使得多个程序可以在相同的时间段内访问和使用同一个代码。DDL文件一般都会带有.dll这样的扩展名,因此也可将DLL作为一种磁盘文件来看待,在这个文件中包含了所需的全部数据、服务函数以及其他资源,DLL模块也正是通过这些函数和数据资源实现动态链接以及提供服务。在动态链接库进行动态链接之前必须与相应的声明函数或是引入函数作为引导,否则就不可以实现程序的动态链接。比如在DLL代码中必须有像__declspec(dllexport) int MyFunction(int n);这样的导出函数以及像__declspec(dllimport) int MyFuncition(int n);这样的输入声明函数,当然仅仅拥有输入和输出两种声明函数是不能将其他程序连接到DLL文件上的,还需要其他的调用函数的配合。
2 多语言编程技术
在软件开发设计的过程中,如果仅仅使用一种或是很少的编程程序是不能将软件的实际功能完全实现的,因此多语言编程技术满足了软件设计多种编程语言的需要,也为多种编写代码实现链接提供了可能性。但是如果多种编程语言混合在一起,若想保证原来各种编程的运行速度以及整体的运行效率,对于多语言编程技术的首要要求就是具有一定的调用规则,主要包括命名规则、堆栈的使用等等,这些都是多语言编程得以实现的基础,也可以说是关键性的问题。以下将对多语言混合编程的函数调用规则以及数据结构作简要的分析。
2.1 调用规则
不同的语言编程,其程序类型也不尽相同,因此多语言编程技术的调用规则还需要满足不同的程序类型需求,比如C++语言常用的调用函数是FUNCTION函数。函数的调用规则决定了函数下一阶段的运行,它直接影响变量的传递和接受,还会对变量的顺序产生一定的影响。因此在一些类型的语言中,需要设定特定的函数进行转换的声明。另外调用规则还和函数的数据传输以及数据的传输形式具有一定的关联性,比如传递的是一个数值还是地址都和调用规则有联系。
2.2 字符转换
一般情况下,在C语言中字符出现的形式主要以指针为主,另外在C语言中的字符传递方式和地址的传递方式相同,但这并不包括字符长度的传递。而一般在C语言中都以字符‘\0’作为每一行的结束符,但是在一些其他的编程语言中,有的语言是直接不具有结束字符,比如在FORTRAN语言中就没有结束符,因此要想实现C和FORTRAN之间字符的传递,可以直接将字符转化为C字符或者是直接编写相应的程序接收字符,后者也可以实现在进行字符转换和传递的同时进行字符长度变量的传递。
3 多语言编程的实现
3.1 在C中调用FORTRAN的动态链接库
在DLL文件中的函数会根据相对应的符号名或是整数值进行函数表的归纳,当DLL引出一个符号时必须使用相对应的符号进行引出,将这些符号统称在一起就叫做符号的引入。在FORTRAN语言中,DLL用户可以直接通过文件的属性找到与之对应的函数或是代码,从而实现函数的声明。将一些类似的代码或是数据和多个函数进行链接之后就会生成所需要的test.dll和zc.dll文件。
当实现动态链接之后,接下来所要考虑的就是如何进行动态链接库的使用。一般情况下,无论是.LIB文件还是.DLL文件都采用隐式连接或是静态连接的方式,因此当有应用程序访问DLL文件时,动态链接库必须存在该程序的目录。这样就可以直接避免出现链接库路径连接错误。在实际的程序设计和软件开发中,采用动态联编的方式来实现链接库的调用比较多。
3.2 在FORTRAN中调用C的动态链接库
在实际的算法运行过程中,由于一些算法或是正反演算法的迭代使用和计算,这就对数据的传输和处理带来影响,并不是所有的数据结果处理都很精确或是合理,严重时还会导致算法或是整个编程运行停止,因此对于一些重要的参数或是函数进行监控室非常必要的。在VC++进行调用算法动态链接库时,如果将链接运行的信息即时显示在相关屏幕上就可以方便对程序运行工程的判断和分析。在VC++中可以编写几个控制动态链接库的函数,这些函数的声明也可以作为FORTRAN算法的引出函数,这时候在运行FORTRAN算法动态链接库的同时也可以将算法的信息显示给VC++的应用程序的状态窗口,根据窗口显示的函数返回值,用户就可以实现对于动态链接库的实时控制以及在FORTRAN中调用C的动态链接库。
4 结语
尽管当前编程技术日新月异,但是在系统或是软件设计中如何将这些云烟编程技术进行综合运用或是实现各个语言程序的相互连接问题,仍是当前在软件开发中仍需要考虑的问题。而在研究中发现,DLL作为一个可以由多个程序同时使用的代码和数据的库,实现了多语言编程技术的相互连接,实现了资源共享,是实现多语言编程技术在软件开发中的应用的基础和前提。
参考文献
[1] 杨小锋,陈艳燕.智能卡中JNI技术的应用实现[J].浙江师范大学学报(自然科学版).2005(03).
[2] 周涛,郭占元,郭向荣.FORTRAN与C#混合编程在土木工程计算中的应用[J].山东交通学院学报.2009(01).
[3] 汤洪志,周华中,胡文平,周亚东.VB与Visual Fortran混合语言编程及其在物探化探数值计算中的应用[J].物探化探计算技术.2002(01).