全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2333
推到 Plurk!
推到 Facebook!

怎樣在C++Builder中創建使用DLL

 
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-26 03:28:21 IP:210.65.xxx.xxx 未訂閱
此為轉貼資料 怎樣在C++Builder中創建使用DLL (上海 施江傑) 自從C++Builder從去年浪漫情人節上市以來,吸引了大量的Delphi、VC、Vb的程式師到它的懷抱,大量的C、C++程式師感歎道:總算有了C的視覺化開發工具,對我也是一樣,從BC、Delphi到C++Builder。 動態連結程式庫(DLL)是Windows編程常遇到的編程方法,下面我就介紹一下在BCB (C++Builder下簡稱BCB) 中如何創建使用DLL和一些技巧。 一、創建: 使用BCB File|NEW建立一個新的DLL工程,並保存好文件BCB,生成一個DLL的程式框架。 1.DllEntryPoint函數?一個入口方法,如果使用者在DLL被系統初始化或者登出時被調用,用來寫入對DLL的初始化程式和卸載程式;參數:hinst用來指示DLL的基底位址;reason用來指示DLL的調用方式,用於區別多線程單線程對DLL的調用、創建、卸載DLL; 2.在程式中加入自己所要創建的DLL過程、函數; 3.用dllimport描述出口; 例程式如下: #include #pragma hdrstop extern "C" __declspec(dllexport) int test(); int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) { return 1; } int test() { return 3; } 注意:動態連結程式庫中調用過程、函數時有不同的CALL方式 __cdecl、 __pascal, __fastcall、__stdcall,BCB中默認的方式?__cdecl(可不寫),如果考慮相容性可用時__stdcall聲明方法?: extern "C" __declspec(dllexport) int __stdcall test(); 對於其中過程、函數也改?: int __stdcall test() 二、使用DLL 在BCB中使用DLL有兩種方法: 1.用靜態調用法 首先需要在BCB的專案中加入輸入介面庫(import library),打開工程項目,使用BCB View|Project Manager打開專案列表,向專案中加入介面庫(*.lib)。 其次在頭文件中加入介面聲明。 例程式如下: //define in include file extern "C" __declspec(dllimport) int __cdecl test(); //use function in main program int I; I=test(); 注意: (1)動態連結程式庫調用過程、函數時CALL方式 與創建時方式一樣不寫?__cdecl,其他需要聲明。 (2)BCB創建的DLL有對應的輸入介面庫(import library),如只有DLL而無庫時,可用BCB的implib工具?生:implib xxx.lib xxx.dll;另外可用:tlib xxx.lib,xxx.lst ?生DLL的內部函數列表,許多Windows的未公開技術就是用這種方法發現的。 2.動態調用法 動態調用法要用Windows API 中的LoadLibrary()和GetProcAddress()來調入DLL庫,指出庫中函數位置,這種方法較常見。 例程式如下: HINSTANCE dd; int _stdcall (*ddd)(void); dd=LoadLibrary("xxx.dll"); ddd=GetProcAddress(dd,"test"); Caption=IntToStr(ddd()); FreeLibrary(dd); 三、注意: 創建DLL時編譯鏈結時注意設置Project Options。 Packages標簽:去除Builder with runtime packages檢查框。 Linker標簽:去除Use dynamic RTL檢查框。 否則創建的DLL需要Runtime packages or Runtime library。
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
系統時間:2024-04-26 13:42:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!