日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > > 充電吧
[導讀]1、 使用Visual C++ 6.0編寫和鏈接DLL打開Visual C++ 6.0集成開發(fā)環(huán)境,新建一個Win32 Dynamic-Link Library類型的工程CDLL,在工程中新建一個C語

1、 使用Visual C++ 6.0編寫和鏈接DLL

打開Visual C++ 6.0集成開發(fā)環(huán)境,新建一個Win32 Dynamic-Link Library類型的工程CDLL,在工程中新建一個C語言源文件cdll.c。源文件中的內容如下:

__declspec(dllexport) int max(int x,int y) /* 比較兩個整型變量大小的函數max */

{

?? if (x>y)

????? return x;

??? else

????? return y;

}

輸入完畢后按下F7鍵來編譯和鏈接CDLL.dll,之后可以在存放該工程的文件夾的Debug子文件夾中找到一個名為CDLL的DLL文件,該文件即以上的C語言源程序生成的DLL。

?

2、 使用Delphi 7編寫調用該DLL的應用程序

打開Delphi 7集成開發(fā)環(huán)境,在默認生成的窗體Form1上拖放3個Edit控件Edit1、Edit2、Edit3和1個Button控件Button1,并在Object Inspector中將3個Edit控件的Text屬性都清空。然后在默認生成的Unit1.pas文件的implementation后輸入:

function max(x,y: Integer): Integer; stdcall external 'CDLL.DLL';

返回Form1,雙擊Button1控件,在生成的事件處理程序中輸入:

Edit3.Text:=IntToStr(max(StrToInt(Edit1.Text), StrToInt(Edit2.Text)));

輸入完畢后,保存這個Project。最后,將CDLL.dll文件copy到保存該Project的文件夾中。

?

3、 測試

在Delphi集成開發(fā)環(huán)境下,按下F9來運行剛剛編寫的Project。在Edit1中輸入2,Edit2中輸入4,然后單擊Button1,可以看到Edit3中會出現(xiàn)4,測試成功。


4、基礎知識


4.1、回調函數


軟件模塊之間總是存在著一定的接口,從調用方式上,可以把他們分為三類:同步調用、回調和異步調用。其中回調是一種雙向調用模式,也就是說,被調用方在接口被調用時也會調用對方的接口;異步調用是一種類似消息或事件的機制,不過它的調用方向剛好相反,接口的服務在收到某種訊息或發(fā)生某種事件時,會主動通知客戶方(即調用客戶方的接口)?;卣{和異步調用的關系非常緊密,通常我們使用回調來實現(xiàn)異步消息的注冊,通過異步調用來實現(xiàn)消息的通知。同步調用是三者當中最簡單的,而回調又常常是異步調用的基礎。

回調函數與普通函數的申明并無區(qū)別,但如果是不同的開發(fā)語言之間通過回調函數來傳遞與處理數據,則一定要注意在不同語言對回調函數的申明與實現(xiàn)時其函數調用約定必須保持一致。


4.2、函數調用約定


聲明過程或函數時,可以指定調用約定(calling convention),尤其在以接口形式提供給其它語言工具使用時,則必須指定過程或函數的調用方式。

Delphi指定調用約定可以使用的指示字包括register、pascal、cdecl、stdcall以及safecall。C/C++調用約定有stdcall、cdecl、fastcall、thiscall、naked call等。

決定了傳遞給例程的參數的順序,還影響參數從棧中的解除、參數傳遞時對寄存器的使用以及處理錯誤和異常等。缺省的調用約定是register。


下表是調用約定的簡要概括:

?

指示字 ...........參數順序 ................................................參數刪除者 寄存器傳遞參數
register ...........從左到右 ...............................................例程 .....................是
pascal ............從左到右 ................................................例程 ....................否
cdecl ..............從右到左 .................................................調用者 ................否
stdcall ............從右到左 .................................................例程 ....................否
safecall ..........從右到左 .................................................例程 ....................否
fastcall ...........函數前兩個參數通過ecx和edx傳遞,...例程 ................部分是
........................其他參數從右向左的順序壓棧
thiscall ...........從右到左 .................................................例程.
(非關鍵詞)..... (this指針保存在ecx,僅用于c++)??
naked call....... 一般用于實模式驅動程序設計 ...........- .............................-


補充說明:

·cdecl調用約定又稱為C調用約定,是C語言缺省的調用約定.

·register約定最多可以使用三個CPU寄存器傳遞參數,而其他的約定都通過棧傳遞所有的參數。

·safecall約定實現(xiàn)了異常防火墻。在Windows中,這一實現(xiàn)在內部處理COM錯誤通知。

·缺省的register約定是效率最高的,因為它通常避免了棧中新幀的創(chuàng)建。

·調用來自用C或C++編寫的共享庫的函數時,cdecl約定是很有用的;而對外部代碼的調用,一般而言,推薦使用stdcall和safecall約定。

·在Windows中,操作系統(tǒng)API函數使用的是stdcall和safecall約定。其他操作系統(tǒng)通常使用cdecl約定。(注意,stdcall約定比cdecl約定具有更高的效率。)

·safecall約定必需用于聲明雙重接口的方法。pascal約定用于維持向后(舊版本)兼容。

?

?

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉