[教學] 如何用 Delphi6.0 call vc++6.0 寫的 DLL 檔

Home Home
引用 | 編輯 mainchen
2002-10-29 15:52
樓主
推文 x0
此為轉貼資料
肖運勇

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

二、在Delphi中調用VC++創建的動態連結程式庫的實例
(一)實驗環 ..

訪客只能看到部份內容,免費 加入會員



獻花 x0
引用 | 編輯 AndersenC
2003-04-09 11:53
1樓
  
大大辛苦你了,
小弟有點小小意見不知道對不對,
大家參考一下。

大大文章中提到製作 MFC DLL 的部分,
有點錯誤,
VC++中若沒有作設定,
預設的 Function Call Conversion 是 __cdecl,
所以 Export 的 API 會是 __cdecl 不是 __stdcall,
這樣會造成 Delphi 的程式呼叫時,
參數傳遞造成錯誤,
故而必須在 MFC DLL 的程式宣告修正如下:
extern "C" _declspec(dllexport) int __stdcall Min1(int x,int y,int z);
extern "C" _declspec(dllexport) int __stdcall Max1(int x,int y,int z);

請多多指教 ^_^ ...

獻花 x0