日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

delphi DLL动态链接库

發布時間:2024/10/8 144 豆豆
生活随笔 收集整理的這篇文章主要介紹了 delphi DLL动态链接库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

假設有兩個應用程序,它們都要調用一個單元中的一個方法,那么這兩個應用程序都要在Uses語句中引用該單元。如果同時運行這兩個應用程序,這個方法就會在內存中存在兩份,這顯然是內存的一種浪費,使用動態鏈接庫就可以解決這個問題。

動態鏈接庫DLL與其他應用程序通過動態鏈接技術來共享代碼。如果一個應用程序使用了動態鏈接庫,Win32系統保證內存中只有DLL的一份復制品,這是通過內存映射文件實現的。DLL首先被調入Win32系統的全局堆棧,然后映射到調用這個DLL的進程的地址空間,在Win32系統中,每個進程擁有自己的32位線性地址空間。如果一個DLL被多個進程調用,每個進程都會收到該DLL的一份映射。在Win32中,DLL可以看作是每個進程自己的代碼。但是這并不是說物理內存中會分配DLL的多個實例。

DLL的優點:

(1)?????? 共享代碼、資源和數據

(2)?????? 隱藏實現的細節

例如我們創建一個引用DLL的例子

(1)?? 新建――other---DLL Wizard 命名為:DLLTest

(2)?? 寫一個加法函數

uses

? SysUtils,

? Classes;

function AddMethod(Num1,Num2 : Integer) : Integer ;stdcall;?? //定義簡單加法函數

? begin

??? Result := Num1 + Num2;

? end;

? exports?????? ??//exports 子句用于引出DLL中要被其他應用程序調用 的函數或過程。

?? AddMethod;

(3)?? 生成DLLTest.dll, 復制DLLTest.dll將其放在要引用該DLL項目工程下。

(4)?? var

? Form10: TForm10;

? function AddMethod(Num1,Num2 : Integer) : Integer ;stdcall; external 'DLLTest.DLL'? //聲明DLL方法

? name 'AddMethod';

implementation

{$R *.dfm}

procedure TForm10.btnEqualClick(Sender: TObject);

var

? num1, num2 : Integer;

begin

? num1 := StrToInt(edtFirst.Text );

? num2 :=StrToInt(edtSecond.Text );

? edtResult.Text :=IntToStr(AddMethod(num1,num2));? //直接使用DLL中的方法

end;

轉載于:https://www.cnblogs.com/taofengli288/archive/2011/09/06/2168669.html

總結

以上是生活随笔為你收集整理的delphi DLL动态链接库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。