在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 技術(shù)開發(fā)教程 > 詳細頁面

Delphi中如何調(diào)用VC++創(chuàng)建的動態(tài)鏈接庫

Delphi中如何調(diào)用VC++創(chuàng)建的動態(tài)鏈接庫

更新時間:2022-05-02 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

Delphi以其獨特的面向控件的開發(fā)方式、強大的數(shù)據(jù)庫功能、快速的編譯技術(shù)以及簡單易學的編程特性,使得它自發(fā)布之日起即格外引人注目,許多程序員也因此將它作為首選的開發(fā)工具。然而,Delphi在科學計算、低端編程等方面的功能不如VC++。VC++功能強大、齊全,但是整個系統(tǒng)比較復雜、龐大,尤其對于初學者來說比較難學,其用戶界面的開發(fā)遠不如Delphi那樣方便、快捷。那么,我們能否將兩者的優(yōu)點結(jié)合起來呢?答案是肯定的!具體做法是:將涉及到比較低級的操作、計算等方面的程序用VC++寫成函數(shù)放在動態(tài)鏈接庫中,而涉及到界面及與用戶交互的編程則用Delphi來實現(xiàn),最后只需在Delphi中調(diào)用VC++編寫的動態(tài)鏈接庫即可。
一、動態(tài)鏈接庫簡介
動態(tài)鏈接庫(DLL,即 “Dynamic-Link Library”)是一個能夠被應(yīng)用程序和其它的DLL調(diào)用的過程和函數(shù)的集合體,它里面包含的是公共代碼或資源。DLL是Windows的基石,所有的Win32 API函數(shù)都包含在DLL中。
使用DLL有許多優(yōu)點:
1、一個DLL可以提供給不同的程序使用,如果有多個程序使用相同的DLL,也只需將DLL在內(nèi)存中裝載一次,這樣就節(jié)省了內(nèi)存開銷。
2、DLL可以使我們的編程更加模塊化,將功能相對獨立的模塊編成一個動態(tài)鏈接庫,這樣改動程序時不需將整個程序重新編譯,只需重新編譯所改動的模塊。
3、使用了DLL組件包可以大大減小可執(zhí)行文件的規(guī)模。
4、對于一個大型的、不斷更新的應(yīng)用程序,可以將許多重復的功能寫成DLL,用主程序調(diào)用,這樣既減少了開發(fā)的工作量,又提高了訪問速度。
5、DLL獨立于編程語言,大多數(shù)WINDOWS編程環(huán)境都允許主程序調(diào)用DLL中的函數(shù)。即可以用VC++、VB、PowerBuilder、Delphi、匯編語言等建立DLL,然后在不同語言編制的應(yīng)用程序中調(diào)用它。這樣就給多人使用不同的編程語言開發(fā)項目提供了極大的方便。

二、在Delphi中調(diào)用VC++創(chuàng)建的動態(tài)鏈接庫的實例
(一)實驗環(huán)境
本實例的編程工具及運行環(huán)境為:Windows 98,VC++6.0,Delphi 5.0 。
(二)實驗內(nèi)容
1.用VC++6.0建立一個動態(tài)鏈接庫MaxMin.DLL,該庫中包含有兩個函數(shù):返回三個整數(shù)中最大整數(shù)的函數(shù)Max1( )和返回三個整數(shù)中最小整數(shù)的函數(shù)Min1( )。
2.用Delphi編寫測試程序調(diào)用動態(tài)鏈接庫MaxMin.DLL中的兩個函數(shù)。
(三)實驗步驟
1.用VC++6.0建立動態(tài)鏈接庫MaxMin.DLL
第一步:啟動VC++6.0,選擇“File/New/MFC AppWizzard(Dll)”,工程名設(shè)為“MaxMin”,按“確定”鈕后,選擇“Regular DLL Using shared MFC DLL”,按“Finish”鈕后,即創(chuàng)造了一個DLL的框架工程。
第二步:選擇“File/New”,在出現(xiàn)的對話框中選擇“C/C++ Header File”,在文件名處輸入“MyDLL”,按“確定”鈕,即創(chuàng)建了一個空的頭文件“MyDLL.h”。在該文件中輸入以下兩行內(nèi)容:
extern "C" _declspec(dllexport) int Min1(int x,int y,int z);
extern "C" _declspec(dllexport) int Max1(int x,int y,int z);
選擇“File/Save”保存該文件的內(nèi)容。
第三步:選擇“File/New”,在出現(xiàn)的對話框中選擇“C/C++ Source File”, 在文件名處輸入“MyDLL”,按“確定”鈕,即創(chuàng)建了一個空的源文件“MyDLL.cpp”。在該文件中輸入以下內(nèi)容:
#include "stdafx.h"
#include "MyDll.h"
extern "C" __declspec(dllexport) int Min1(int x,int y,int z)
{
if ((x<=y) & (x<=z)) return x;
else if ((y<=x) & (y<=z)) return y;
else return z; /*找出x,y,z中的最小整數(shù)*/
}

extern "C" __declspec(dllexport) int Max1(int x,int y,int z)
{
if ((x>=y) & (x>=z)) return x;
else if ((y>=x) & (y>=z)) return y;
else return z; /*找出x,y,z中的最大整數(shù)*/
}
選擇“File/Save”保存該文件的內(nèi)容。
第四步:按下運行圖標“!”,即生成了MyDLL.DLL(在當前工程目錄的DEBUG子目錄下)。

2.用Delphi編寫調(diào)用MaxMin.DLL的測試程序
調(diào)用動態(tài)鏈接庫有兩種方法,即隱式調(diào)用和顯式調(diào)用。
(1)隱式調(diào)用
第一步:啟動Delphi,選擇“New Application”,生成一個空的應(yīng)用程序,在Form的“Name”屬性處輸入“TestVcDLLForm”,Caption屬性處輸入“VC++的DLL隱式調(diào)用測試”,在Form中放入控件如表1所示(其中所有的Edit控件的“Text”屬性均設(shè)為空):


(表1:所用到的控件及其屬性)



(圖1:應(yīng)用程序屏幕效果)

最后設(shè)計的Form的屏幕效果如圖1所示。選擇“File/Save all”,在“Save unit1 as”對話框中將源文件名設(shè)為“main.pas”,按“保存”鈕;在“Save Project1 as”對話框中將工程名設(shè)為“TestVcDLL”,按“保存”鈕。
第二步:選擇“File/New…”,在出現(xiàn)的“New Item”對話框中選擇“unit”,按“OK”鈕,生成一個空的源文件,在該文件中輸入以下內(nèi)容:
unit MaxMin;

interface
function Min1(x,y,z:Integer):Integer; stdcall;
function Max1(x,y,z:Integer):Integer; stdcall;

implementation
function Min1;external 'MaxMin.DLL' name 'Min1';
function Max1;external Max'Min.DLL' name 'Max1';
end.
選擇“File/Save As…”,將上述文件存為“MaxMin.pas”。
第三步:在Main.pas文件中,在“implementation”語句后加入:
uses
MaxMin;
第四步:在Form上雙擊“運行”按鈕對該按鈕的“Click”事件編程,代碼如下:
procedure TTestVcDLLForm.btnRunClick(Sender: TObject);
begin
edtMax.Text:=IntToStr(Max1(StrToInt(edtInt1.Text),
StrToInt(edtInt2.Text),StrToInt(edtInt3.Text))); //調(diào)用動態(tài)鏈接庫中的函數(shù)Max1
edtMin.Text:=IntToStr(Min1(StrToInt(edtInt1.Text),
StrToInt(edtInt2.Text),StrToInt(edtInt3.Text))); //調(diào)用動態(tài)鏈接庫中的函數(shù)Min1
end;
保存該文件。
第五步:將上述1.中VC++6所建立的動態(tài)鏈接庫“MaxMin.DLL”拷入Delphi的當前工作目錄中。
第六步:運行。結(jié)果如圖2所示。


圖2:隱式調(diào)用DLL運行結(jié)果



圖3:顯式調(diào)用DLL運行結(jié)果

(2)顯示調(diào)用
第一步:同隱式調(diào)用。只是將Form的“Caption”屬性改為“VC++的DLL顯式調(diào)用測試”。
第二步:選擇“File/New…”,在出現(xiàn)的“New Item”對話框中選擇“unit”,按“OK”鈕,生成一個空的源文件,在該文件中輸入以下內(nèi)容:
unit Unit1;

interface

type
TMin1=function(x,y,z:Integer):Integer; stdcall;
TMax1=function(x,y,z:Integer):Integer; stdcall;
THandle=Integer;

implementation

end.
選擇“File/Save As…”,將上述文件存為“MaxMin.pas”。
第三步:在Main.pas文件中,在“implementation”語句后加入:
uses
MaxMin;
第四步:在Form上雙擊“運行”按鈕對該按鈕的“Click”事件編程,代碼如下:
procedure TTestVcDLLForm.btnRunClick(Sender: TObject);
var
Handle:THandle;
Min1:TMin1;
Max1:TMax1;
begin
Handle:=LoadLibrary('MaxMin.dll'); //將“MaxMin.dll”的文件映象映射進調(diào)用進程的地址空間
if Handle<>0 then
begin
@Min1:=GetProcAddress(Handle,'Min1'); //取得DLL中函數(shù)Min1( )的地址
@Max1:=GetProcAddress(Handle,'Max1'); //取得DLL中函數(shù)Max1( )的地址
if (@Min1<>nil) and (@Min1<>nil) then
begin
edtMin.Text:=IntToStr(Min1(StrToInt(edtInt1.Text),
StrToInt(edtInt2.Text),StrToInt(edtInt3.Text))); //調(diào)用動態(tài)鏈接庫中的函數(shù)Min1
edtMax.Text:=IntToStr(Max1(StrToInt(edtInt1.Text),
StrToInt(edtInt2.Text),StrToInt(edtInt3.Text))); //調(diào)用動態(tài)鏈接庫中的函數(shù)Max1
end else ShowMessage('調(diào)用函數(shù)“GetProcAddress”時出錯!');
FreeLibrary(Handle); //從進程的地址空間中解除“MaxMin.dll”文件的映射
end;
end;
保存該文件。
第五步:將上述1.中VC++6所建立的動態(tài)鏈接庫“MaxMin.DLL”拷入Delphi的當前工作目錄中。
第六步:運行。結(jié)果如圖3所示。

以上實例均編譯通過,運行正確。

三、結(jié)束語
動態(tài)鏈接庫為不同編程環(huán)境下的應(yīng)用程序之間的連接提供了方便,節(jié)省了內(nèi)存,提高了速度,同時也豐富了PowerScript語言的編程能力。動態(tài)鏈接庫是Windows下程序組織的一種重要方式,使用動態(tài)鏈接庫可以極大地保護用戶在不同開發(fā)工具、不同時期所做的工作;利用動態(tài)鏈接庫,用戶可以逐步去構(gòu)筑自己的程序模塊庫,為今后的工作積累素材。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 亚洲第一成肉网| 成人在线激情网| 天堂在线中文在线| 黄页网站在线观看视频| 蜜臀av午夜一区二区三区| www日韩在线观看| 一级网站在线观看| 亚洲国产一二三精品无码| 美女av免费观看| 99精品免费在线观看| 小明看看成人免费视频| 毛片av在线播放| 91看片就是不一样| 亚洲男人天堂2021| 久久综合久久网| 欧美成人三级在线播放| www.亚洲成人网| 日韩欧美国产片| 日本欧美黄色片| 精产国品一二三区| 国模无码视频一区二区三区| 一区二区在线播放视频| 老子影院午夜伦不卡大全| 亚州精品一二三区| 九色自拍视频在线观看| 最新国产黄色网址| 波多野结衣家庭教师视频| 色偷偷中文字幕| www.国产区| 成年人看的毛片| 亚洲av毛片在线观看| www国产黄色| 成人精品视频在线播放| а 天堂 在线| 99视频在线视频| 欧美一级在线看| 成人免费观看在线| 国产成人三级视频| 一级淫片在线观看| 9久久婷婷国产综合精品性色| 肉大捧一出免费观看网站在线播放 | 一区二区三区网址| 久在线观看视频| 中文字幕色呦呦| 男女啪啪的视频| 在线观看免费不卡av| 无码人妻丰满熟妇区毛片| 欧美,日韩,国产在线| www.日本在线视频| avove在线观看| 国产精品av免费| 日本77777| 国产三级生活片| 在线一区二区不卡| 天天色天天综合网| 亚洲涩涩在线观看| 日韩在线一区视频| 亚洲综合20p| 免费久久久久久| 国产在线拍揄自揄拍无码| 国产农村妇女精品久久| 激情久久综合网| 日本高清免费观看| 999久久久精品视频| 午夜国产一区二区三区| 国产三级三级三级看三级| 欧美午夜aaaaaa免费视频| 少妇激情一区二区三区| 日日干夜夜操s8| 美国av在线播放| 草b视频在线观看| 久久久久久久久久久福利| 可以免费在线看黄的网站| 亚洲精品高清无码视频| 午夜视频在线网站| 国产精品视频网站在线观看| 亚洲 自拍 另类小说综合图区 | 伊人影院综合在线| 国内国产精品天干天干| 国产三级中文字幕| 日韩极品视频在线观看| 免费在线激情视频| 亚洲一级片网站| 91免费网站视频| 日本xxxxxxxxxx75| 丝袜老师办公室里做好紧好爽| 欧美日韩亚洲自拍| 樱空桃在线播放| av在线观看地址| 国产免费又粗又猛又爽| 国产欧美综合一区| 999香蕉视频| 喜爱夜蒲2在线| 欧美日韩一区二区在线免费观看| 中文字幕22页| 五月丁香综合缴情六月小说| 天堂av在线网站| www精品久久| 天天久久综合网| 凹凸日日摸日日碰夜夜爽1| 亚洲成年人专区| 亚洲国产精品三区| 天堂…中文在线最新版在线| 日本一二三区在线| 欧美日韩在线成人| 国产美女永久无遮挡| 午夜免费看毛片| 国内外免费激情视频| 国产911在线观看| 亚洲小视频网站| 国产偷人视频免费| 东北少妇不带套对白| 日本一本在线视频| 一区二区三区免费播放| 欧美日本视频在线观看| 国产91porn| 涩涩网站在线看| 五月婷婷激情久久| 日韩黄色片视频| 5月婷婷6月丁香| 欧美无砖专区免费| 蜜臀av.com| 三级黄色片免费看| 国产91色在线观看| 久久精品一区二| 东京热加勒比无码少妇| 精品国产一区三区| 91国在线高清视频| 麻豆视频传媒入口| 国产免费一区二区三区四在线播放| 日本www.色| 91激情视频在线| 国产喷水theporn| 亚欧美在线观看| 午夜剧场在线免费观看| 欧美婷婷精品激情| 最近中文字幕一区二区| 天天干天天操天天玩| 成人综合久久网| 久久婷婷中文字幕| 日韩视频 中文字幕| 玖玖精品在线视频| 99在线免费视频观看| 可以在线看的av网站| 成人免费在线小视频| 成人午夜视频免费在线观看| 女性隐私黄www网站视频| 国产视频在线视频| 久久黄色片网站| 最新黄色av网站| 日本手机在线视频| 国产免费毛卡片| 亚洲最大综合网| 搡的我好爽在线观看免费视频| 日本黄色福利视频| 免费看污污视频| 国精产品一区一区三区视频| 大香煮伊手机一区| 亚洲综合在线一区二区| 热久久最新地址| 久久久久久久午夜| 色啦啦av综合| 日韩精品一区二区三区电影| 妞干网在线视频观看| 日本中文字幕片| 欧美激情第一区| 日韩国产小视频| 超碰影院在线观看| 中文字幕一区二区在线观看视频| 女人色极品影院| 中文字幕国内自拍| 日韩国产小视频| 日韩av在线中文| 国产精品12345| 午夜免费看毛片| www国产精品内射老熟女| 中文字幕丰满乱码| 欧美性久久久久| 国产三级中文字幕| 国产欧美高清在线| 成人国产一区二区三区| 亚洲天堂网一区| 免费国产黄色网址| 亚洲自拍偷拍一区二区三区| 亚洲成熟丰满熟妇高潮xxxxx| 国产经典久久久| 超碰超碰在线观看| 国产又黄又大又粗视频| 今天免费高清在线观看国语| 日日噜噜夜夜狠狠| 日本韩国欧美在线观看| 久久视频免费在线| 亚洲va在线va天堂va偷拍| 91传媒久久久| 阿v天堂2018| av中文字幕av| 91视频福利网| 日本xxxx黄色| 欧美精品aaaa| 国产福利一区视频|