廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 10072 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
mainchen 葫蘆墩家族
個人頭像
個人文章 個人相簿 個人日記 個人地圖
社區建設獎
頭銜:
版主
級別: 版主 該用戶目前不上站
版區: 星僑五術軟體
推文 x22 鮮花 x36
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[Delphi][教學] [教學] 如何用 Delphi6.0 call vc++6.0 寫的 DLL 檔
此為轉貼資料
肖運勇

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++創建的動態連結程式庫的實例
(一)實驗環 ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容



[ 此文章被panasonic732在2004-12-20 23:40重新編輯 ]



獻花 x0 回到頂端 [樓 主] From:未知地址 | Posted:2002-10-29 15:52 |
AndersenC
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x0
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

大大辛苦你了,
小弟有點小小意見不知道對不對,
大家參考一下。

大大文章中提到製作 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 回到頂端 [1 樓] From:未知地址 | Posted:2003-04-09 11:53 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.069477 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言