線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:936
推到 Plurk!
推到 Facebook!

請問有關 DLL 宣告識別字的涵義

尚未結案
Taiyo
一般會員


發表:2
回覆:2
積分:0
註冊:2003-02-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-22 21:37:36 IP:220.134.xxx.xxx 未訂閱
不好意思,我查我買的DELPHI書籍都沒寫有關這方面的解釋 一直很想了解,查DELPHI的HELP我也看不懂,它在說什麼  我查了一下論壇相關文件 有人用了
Vicen
高階會員


發表:13
回覆:145
積分:151
註冊:2005-03-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-23 09:19:54 IP:221.226.xxx.xxx 未訂閱
exports语句声明为外部函数,DLL的函数必须使用exports导出后,才能在外部程序调用时看到,否则无法使用。 Stdcall、far、Cdecl、Pascal,都是默认的约定调用格式而已,无论是Object Pascal还是C 都规定,凡是要输出的例程必须采用Stdcall调用约定。 WINDOWS 32位平台API也是采用该类型的调用约定,所以使用Stdcall调用约定 在Object Pascal、C 以及Windows9X/NT/2000/2003/XP下都通用,far则是为了兼容16位系统所采用的约定方式,现在应该没人用了吧~
Taiyo
一般會員


發表:2
回覆:2
積分:0
註冊:2003-02-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-23 09:26:35 IP:220.134.xxx.xxx 未訂閱
謝謝你 看過你的說明,清楚的了解 不然我都亂試,也看不出有什麼不一樣 謝謝你
speedup
資深會員


發表:19
回覆:259
積分:280
註冊:2003-07-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-23 09:30:21 IP:220.135.xxx.xxx 未訂閱
register, pascal, cdecl, stdcall,(far,near,export是16bit Windows Programing用)簡單的說就是應用程式在呼叫副程式(procedure /function)時 "傳遞參數的協定方法",基本上如果你要了解應用程式如何傳遞參數,你必須具備一點點組合語言的知識,了解CPU架構中Stack/Register(堆疊/暫存器)。 但就實際在寫應用程式時,除非你寫組合語言或類似Compiler或Interpreter的應用程式才需要了解參數傳遞的運作細節,不然的話你只要了解,你所引用的DLL or library 的函數實做為何,你在宣告引用時,用相同的宣告即可,剩下的細節Complier會幫你解決掉 我簡單說明每種 參數傳遞的運作方式 register :由左至右將參數放入暫存器(register),此種呼叫副程式的方式最快(Delphi 預設) pascal :由左至右將參數放入堆疊(Stack) cdecl :由右至左將參數放入堆疊(Stack),由副程式負責清除堆疊,此種呼叫副程式的方式通常用於C,C stdcall :由右至左將參數放入堆疊(Stack),標準的Windows API使用 safecall :由右至左將參數放入堆疊(Stack),用於COM/COM 中的Dual Interface即ActiveX 你可一參考Delphi Help的 Calling conventions Parameter passing Method calls Function results 最後強調的是 除非你想寫類似Compiler或Interpreter的應用程式才需要了解參數傳遞的運作細節不然你只需知道怎麼用即可 混心雜欲 棄修身~唉
------
唉~
系統時間:2024-07-03 6:34:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!