当前位置: 首页 > 专利查询>李湘江专利>正文

一种VB与VC程序混合编译链接的方法技术

技术编号:2822292 阅读:406 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种VB与VC程序混合编译链接的方法,包括以下步骤:1)制作VB的伪编译器;2)编写VB源程序,编译VB源程序,使用伪VB编译器获取OBJ文件和链接参数;3)编写VC源程序,编译VC源程序,获取OBJ文件;4)对两种开发平台生成的多个OBJ文件进行混合和替换;5)使用链接器进行统一链接,生成统一的可执行文件。本发明专利技术发挥了两种软件开发的各自优势,实现了目标代码高度融合,是一种新的软件联合编程的开发方法。

【技术实现步骤摘要】

本专利技术属于Windows平台下软件开发
,涉及使用VB与VC两语 言开发平台进行联合编程,实现混合编译链接的一种方法。
技术介绍
混合编程是指源程序使用两种或两种以上计算机编程语言来生成应用程序的开发过程。混合编程的特点是可以充分利用现有的其他语言编制的软件代 码,提高软件代码资源的可复用性,縮短软件的开发周期;开发出无法用单一 语言实现的功能模块,提高软件的集成度和可操作性;提高软件的执行速度和 可维护性;多个单位协同开发集成系统时,各协作单位通过约定数据接口,使 用不同的开发平台独立开发各自独立的功能模块,实现对技术秘密和数据秘密 的保护。VB是一种模块化的编程语言,作为一种简单易用的Windows软件开发工 具,VB中高度的封装和模块化减轻了编程者的负担,它使程序员不必直接面对 纷繁复杂的Windows消息,将精力主要集中在程序功能的实现上,大大提高了 编程效率。但有一些数据结构在VB中的表达比较困难;VB也使开发人员失去 了许多访问底层能力和直接与Windows交互的机会。VC是一种功能强大的编程语言,目标代码简洁高效,运行速度快。但VC 难度较大,学习与开发周期长,使用起来不方便,在很大程度上掩盖了其本身 的优点。利用VB与VC混合编程来编制程序可以充分发挥两者的优点,用VB快速 开发出漂亮的界面以及外围处理程序,再用VC编写底层的各种操作,如内存的 操作、1/0端口的操作、多线程处理及数据处理等,VC中还可以嵌入汇编语言 进行更底层的操作。这样可大大提高程序的执行效率和程序编制的灵活性。目前VB和VC联合编程有4种方式1)外部命令法利用VC编写一个可以完成具体功能的可执行文件,然后利用VB中的Shell 函数去执行这个程序。这是最简单也是最容易实现的方法,但这种方法灵活性 以及可交互性很差。VB程序只能简单地启动外部的可执行程序,不能很好的控 制它的运行,并且在这两个进程间交换数据也是非常困难的, 一般是通过读写 临时文件的方法进行数据交换,运行效率较低。因此,这种方法在实际中运用较少。2) 动态链接库法动态链接库(DLL)是可执行的模块,但它没有自己的堆栈,必须在调用 动态链接库函数的程序环境下运行。动态链接库扩展了应用程序的特性。由于 动态链接库能够动态地装入进程的地址空间,因此应用程序能够在运行时确定 需要执行什么操作,然后装入相应的代码,以便根据需要执行这些操作。动态 链接库有助于节省内存。如果两个或多个应用程序使用同一个动态链接库,那 么该动态链接库的页面只要放入RAM —次,所有的应用程序都可以共享它的各 个页面。动态链接库有助于资源的共享。动态链接库可以包含对话框模板、字 符串、图标和位图等资源,多个应用程序能够使用动态链接库来共享这些资源。 通常使用VC编写动态链接库,在VB程序中调用动态链接库,实现联合编程。3) ActiveX控件法ActiveX控件是可执行组件,它们是建立在Microsoft的COM技术和OLE 技术基础上的。对于用户来说,它们与VB中使用的普通控件十分相像。使用 ActiveX控件也可以使得VB和VC两种语言之间进行交流。ActiveX控件和它 的客户应用程序之间通过三种方式进行通信方法、属性和事件。通常使用VC 编写ActiveX控件,在VB程序中调用ActiveX控件,实现联合编程。4) 自动化服务器法自动化服务器是向其他应用程序(称为自动化客户端)公开可编程对象(称 为自动化对象)的应用程序。自动化服务器有时称为自动化组件。自动化使应 用程序能够对另一个应用程序中实现的对象进行操作,或者将对象公开以便可 以对其进行操作。通常使用VC创建自动化服务器接口,在VB程序中调用自动 化服务器接口,实现联合编程。以上四种混合编程模式中,外部命令法实现最为简单,其技术层次为最低 级,需要应用API提供的进程操作函数来解决程序异步执行和黑屏问题,同时 这种调用模式的执行效率也比较低。ActiveX控件法比外部命令法前进了一步, 其缺点是用其他语言编制的被调用模块一旦被修改,则整个软件必须重新进行 编译连接,软件的可维护性较差。动态链接库法是目前普遍采用的一种方式, DLL可以包含可执行代码、数据和各种资源,扩大了库文件的使用范围,实现 了代码的封装,程序简捷明晰,执行效率高,软件的可维护性、可移植性和可 复用性好。自动化服务器由于釆用统一的接口,应用程序在执行和使用服务器 时有着完全的自由,实现也比较简单。以上这些方式都是通过形成某种文件资 源的形式,实现两种开发语言的联合编程,没有实现代码的完全融合。
技术实现思路
为了克服现有技术中的不足之处,本专利技术提供了一种VB与VC两种软件开 发平台实现混合编译链接的方法。为了实现上述目的,本专利技术采用以下技术方案1) 制作伪VB编译器;2) 编写VB源程序,编译VB源程序,使用伪VB编译器截获OBJ文件和 链接参数;3) 编写VC源程序,编译VC源程序,获取OBJ文件;4) 对两种开发平台生成的多个OBJ文件进行混合和替换;5) 使用链接器进行统一链接,生成统一的可执行文件。 由于采用了上述技术方案,本专利技术具有以下的有益效果本专利技术使用VB和VC编写的源程序,分别进行编译生成各自的目标文件,再 将多个目标文件进行整理,集中进行链接,生成统一的可执行文件。发挥了两种软 件开发的各自优势,实现了目标代码高度融合,是一种新的软件联合编程的开发方 法。附图说明图1是本专利技术的逻辑流程图;图2是本专利技术的伪链接程序的流程图。具体实施方式下面结合附图对本专利技术的具体实施方式作进一步的说明和阐述 VB和VC是微软公司推出的两种软件开发平台,VB使用Basic语言,VC 使用0++语言。但VB和VC —样采取了编译链接的方法将源程序编译成本地码。 VB系统首先是调用编译程序C2.exe将源程序中的每个frm、 bas、 cls、 vbp文件 分别编译为OBJ文件,然后再调用链接程序Link.exe将它们链接成EXE文件, 这个过程是自动的,链接完成后VB系统会自动将OBJ文件删除。实际上VB 的编译器C2.exe和VC的C2.DLL基本上是相同的,而VB的链接器Link.exe 和VC的链接器就是同一个程序。要实现混合链接的目的,就需要在链接程序链 接输出EXE之前对OBJ文件进行处理,将VC编译的OBJ文件和VB编译的 OBJ文件链接到同一个EXE文件中。 1)伪VB编译器的制作首先需要编制一个伪链接程序,当然这个程序不是要实现链接的功能,而是截获OBJ文件,获取VB传递给链接程序的参数,然后调用原链接程序完成 链接工作。用VB先创建一个EXE工程,在Form—Load事件里面写下面的语句Private Sub Form—Load()Shell "VBLink.exe " & Command$IfMsgBox("编译完成,请备份OBJ文件! ", vbOKCancel) = vbOK Then Shell "VBlink.exe " & Command$ '调用原链接程序 Text 1= Command$ '获取链接参数 End If End Sub然后编译为Linktemp.exe文件,接下来将VB本文档来自技高网
...

【技术保护点】
一种VB与VC程序混合编译链接的方法,包括以下步骤:1)制作伪VB编译器;2)编写VB源程序,编译VB源程序,使用伪VB编译器获取OBJ文件和链接参数;3)编写VC源程序,编译VC源程序,获取OBJ文件;4)对两种开发平台生成的多个OBJ文件进行混合和替换;5)使用链接器进行统一链接,生成统一的可执行文件。

【技术特征摘要】

【专利技术属性】
技术研发人员:李湘江
申请(专利权)人:李湘江
类型:发明
国别省市:43[中国|湖南]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1