高中信息技術(shù)教學(xué)論文 VB調(diào)用C程序的方法—動(dòng)態(tài)鏈接庫法_第1頁
高中信息技術(shù)教學(xué)論文 VB調(diào)用C程序的方法—動(dòng)態(tài)鏈接庫法_第2頁
高中信息技術(shù)教學(xué)論文 VB調(diào)用C程序的方法—動(dòng)態(tài)鏈接庫法_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、VB調(diào)用C程序的方法動(dòng)態(tài)鏈接庫法文中介紹了一種實(shí)現(xiàn)VB調(diào)用C語言程序的方法動(dòng)態(tài)連接庫法,給出了動(dòng)態(tài)鏈接庫制作的一般框架,通過實(shí)例描述了動(dòng)態(tài)連接庫的實(shí)現(xiàn)及其制做方法、編程步驟,這種方法具有普遍的意義。關(guān)鍵詞 VB 動(dòng)態(tài)連接庫DLL C程序 一、引言     Visual Basic( 以下簡(jiǎn)稱VB)是一種可視化的面向?qū)ο蟮木幊陶Z言,以其編程簡(jiǎn)單、快捷等特點(diǎn),深受廣大WINDOWS程序員的青睞。利用VB開發(fā)界面友好、操作方便的軟件只需很短的時(shí)間。但是VB運(yùn)行速度較慢,對(duì)于龐大的科學(xué)計(jì)算問題,VB的這種慢速會(huì)使人難以忍受。C語言是國際上非常流行的一種

2、中級(jí)編程語言,以其靈活、高效等優(yōu)點(diǎn)而獲得廣泛應(yīng)用,許多的應(yīng)用程序都是用C語言在DOS環(huán)境下編寫而成。那么如何發(fā)揮VB和C這兩種語言的優(yōu)勢(shì),用VB設(shè)計(jì)一種良好的for windows界面來調(diào)用C語言程序,即實(shí)現(xiàn)VB調(diào)用C語言程序呢?現(xiàn)有的文獻(xiàn)只提到動(dòng)態(tài)鏈接庫(以下簡(jiǎn)稱DLL)可以將這兩種語言連接起來,但有講動(dòng)態(tài)鏈接庫DLL的制做及其編程方法。本文詳細(xì)介紹了Borland C環(huán)境下制作動(dòng)態(tài)鏈接庫以及VB調(diào)用for dos動(dòng)態(tài)鏈接庫的的方法、步驟,并通過實(shí)例描述VB調(diào)用C程序的全過程。二、用Borland C編寫DLL程序的方法      

3、 要想實(shí)現(xiàn)VB調(diào)用C程序,首先需要用Borland C編寫動(dòng)態(tài)連接庫DLL程序(假設(shè)DLL程序取名為example)。動(dòng)態(tài)鏈接庫包含四個(gè)文件:C語言源程序(.C)、模塊定義文件(.DEF)、原型函數(shù)文件(.H)和工程文件(.PRJ)。下面分別詳細(xì)介紹一下這四種文件的具體結(jié)構(gòu)。1、編寫C語言源程序的框架:C語言源程序(example.C),它包括三種函數(shù):入口函數(shù)、輸出函數(shù)和終止函數(shù)。其具體結(jié)構(gòu)如下:/*/* 文件名: example.C */*/#include <windows.h>/*入口函數(shù)*/int FAR PASCAL LibMain ( HANDLE hIns

4、tance,WORD wDataSeg,WORD cbHeapSize,LPSTR lpszCmdLine )if (cbHeapSize!=0)UnlockData(0);return (1);/*輸出函數(shù)*/int FAR PASCAL example(int param1,.,char param n). /*C語言應(yīng)用程序*/ /*終止函數(shù)*/int FAR PASCAL WEP ( int /*SystemExit*/ )return(1);       以上各組成部分參數(shù)的含義:Windows.h頭文件,它包含有

5、數(shù)據(jù)類型的定義、API入口點(diǎn)定義和其它有用的參數(shù)信息。PASCAL說明符定義該程序的傳遞參數(shù)和凈化堆棧的協(xié)定(注意:DLL外部傳送的指針必須是遠(yuǎn)指針FAR)。LibMain帶四個(gè)參數(shù):hInstance、 wDataSeg、cbHeapSize和lpszCmdLine。第一個(gè)參數(shù)hInstance是DLL事例句柄, wDataSeg參數(shù)是數(shù)據(jù)段(DS)寄存器值,cbHeapSize參數(shù)是在模塊定義文件中定義的堆的大小,LibMain 使用該值使本地堆初始化。lpszCmdLine參數(shù)包括命令行信息,但很少被DLL使用。一般來說,這四個(gè)參數(shù)是制作DLL通用的參數(shù)。如果不想讓DLL數(shù)據(jù)被封住,那么

6、必須調(diào)用unlockdata恢復(fù)正常的非鎖狀態(tài),如果DLL初始化已經(jīng)成功,DLL則返回1,若不成功則返回0值,且 DLL退出系統(tǒng)。DLL的輸出函數(shù)實(shí)現(xiàn)用戶所要完成的任務(wù),這部分是DLL的核心。它與一般C語言程序不同之處在于無scanf函數(shù)。所有的外部指針都是遠(yuǎn)指針FAR。畫直線函數(shù)要用lineto函數(shù)。DLL包括一個(gè)終止函數(shù),終止函數(shù)有時(shí)稱為退出函數(shù),它的名字必須是WEP。且它可以被包括在DLL模塊定義文件的EXPORTS段中。 2、模塊定義文件(.DEF)的結(jié)構(gòu)和各段的意義模塊定義文件的結(jié)構(gòu)如下:/*/* 文件名: example.DEF */*/LIBRARY example /* DLL

7、name */DESCRIPTION ' example.DLL'EXETYPE WINDOWSCODE PRELOAD MOVEABLE DISCARDABLEDATA PRELOAD MOVEABLE SINGLEHEAPSIZE 1024EXPORTSexample 1WEP 2     關(guān)鍵字LIBRARY是把這個(gè)模塊視為一個(gè)DLL,庫的名字example跟在其后,且必須與該庫的名字、DEF中的DLL的文件名相一致。DESCRIPTION語句采用一個(gè)字符串,其長(zhǎng)度可達(dá)128 個(gè)字符,通常用它來保存模塊描述的信息。EXETYPE windows語句每個(gè)windows應(yīng)用程序和 DLL都需要。DATA語句定義該庫數(shù)據(jù)段的內(nèi)存屬性,關(guān)鍵字MOVEABLE允許內(nèi)存管理程序在 必要時(shí)移動(dòng)內(nèi)存段,關(guān)鍵字SINGLE是DLL必要,因?yàn)镈LL總是有一個(gè)單一數(shù)據(jù)段,而不管訪 問它的應(yīng)用程序的數(shù)量。HE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論