DELPHI_7_动态链接库DLL断点调试_第1页
DELPHI_7_动态链接库DLL断点调试_第2页
DELPHI_7_动态链接库DLL断点调试_第3页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、DELPHI 7 动态链接库 DLL 断点调试马根峰( 广东联合电子服务股份有限公司 , 广州 510300)1 Delphi 几个经典版本简介Delphi 从 1995 年的 版本,发展到现在的最新的 XE3 版本,历经 N 多版本,但最为经 典的几个版本个人觉得应属、2007 和 2010。Delphi 应该是 Delphi 用户最多的版本。Delphi 2007 是功能就不多说了,归根结底一句话,它是 AnsiString 的最后一个版本, 在 Delphi 2007 中, string 类型映射为 AnsiString , char 类型映射为 AnsiChar , Pchar 类型

2、映射为PAnsiChar。所以DELPHI低版本的程序可以较轻松地迁移到DELPHI 2007版本。Delphi 2007 也是 Delphi 程序员很容易上手的晚期版本。从 Delphi2009 开始起,到现在的 Delphi XE3 为止,都是 unicode 版本。 String 类型映 射为 UnicodeString 而不是 AnsiString , Char 类型映射为 WideChar, PChar 类型映射为 PWideChar。由于 Delphi 、2007 和 2010 在界面上乃至功能上的一些变化,所以在动态链接库 DLL 断点调试上,有较大的变化。在今后几天的时间中,笔

3、者会以三篇文章来分别详细地介绍 Delphi 7 、 2007 和 2010 这三个版本中的 DLL 断点调试技术。本篇文章来详细地介绍 Delphi 7 中的动态链接库 DLL 断点调试技术。2 DELPHI 7 的 DLL 断点设置与 DLL 调试 在 DELPHI 以及以前的版本中,动态链接库的调试方法如下:点击菜单 Run-'Parameters.打开 Run Parameters窗口,如图 1 所示。图 1 点击菜单 Run-'Parameters.打开 Run Parameters窗口在Run Parameters窗口中,在 Host Application中填入宿

4、主程序的完整路径然后选择,如图2所示。图 2 在 Run Parameters 窗 口中, 点击 Browse 选中宿主程序G:Delphi_DII_Debug70Mage nf_Master设置断点后,输入 F9或者点击Run->Run来运行宿主程序,如图3所示-旦昱7 Delphi. Y -*11 LkiIJ i AEEE33 赴斗|Cidrliiire | WrU 5v:*mt站匚:Hi血 | Dj:半*了 BT'E | ADD2世ee$勺丁叔話HI汀建赳国伺Qfw翻出g'差蚕图3设置断点后,输入 F9或者点击Run->Run来运行宿主程序输入1和2后,然后点

5、击按钮“=”,即进入DLL的断在主程序窗口对应的文本框中, 点调试,如图4所示。7 MlY - ft±nif_Deill Ai v-J JZL图4进入DLL的断点调试3例子中的宿主程序及DLL程序代码宿主程序代码-unit UDIIDebug;in terfaceusesWin dows. Messages, SysUtils, Varia nts. Classes, Graphics, Con trols, Forms,Dialogs, StdCtrls, ExtCtrls, Butt on s,Contnrs , ActiveX, StrUtils ;typeTDII_Add=f

6、u nctio n(i nt_1,i nt_2:i nteger):i nteger;stdcall;TfrmDllDebug = class(TForm)Edit1: TEdit;Edit2: TEdit;Label1: TLabel;Edit3: TEdit;BtnAdd: TButton;procedure FormCreate(Sender: TObject);procedure FormClose(Sender: TObject; var Action: TCloseAction);procedure BtnAddClick(Sender: TObject);private Priv

7、ate declarations public Public declarations HInst:Thandle;FDll_Add:TFarProc;functionDll_Add:TDll_Add;fmprocedure (Sender: TObject); beginhinst:=loadlibrary('');if hinst>0 thenbeginFDll_Add:=getprocaddress(hinst,pchar('Dll_Add');if FDll_Add<>nil thenfunctionDll_Add:=TDll_Add(

8、FDll_Add)elsemessagedlg('Fatal error! Function not be found!',mtWarning, mbYes, 0) ;endelsemessagedlg('Fatal error! not be found!',mtWarning, mbYes, 0) ;end; procedure (Sender: TObject; var Action: TCloseAction); begintryfreelibrary(hinst); except end;end;procedure (Sender: TObject);

9、varint1,int2,int_return:integer;beginint1:=strToInt; int2:=strToInt;int_return:=functionDll_Add(int1,int2); :=intToStr(int_return);end;end. 宿主程序代码 DLL 程序代码 library Magenf_Detail; Important note about DLL memory management: ShareMem must be the first unit in your library's USES clause AND your pr

10、oject's (select Project-View Source) USES clause if your DLL exports any procedures or functions that pass strings as parameters or function results. This applies to all strings passed to and from your DLL-even those that are nested in records and classes. ShareMem is the interface unit to the shared memory manager, which must be deployed along with your DLL. To avoid using , pass string information using PChar or ShortString parameters. usesSysU

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论