delphi在创建和使用dll的时候如果使用到string,请引入sharemem单元

delphi在创建和使用dll的时候如果使用到string,请引入sharemem单元

ID:30775704

大小:73.00 KB

页数:7页

时间:2019-01-03

delphi在创建和使用dll的时候如果使用到string,请引入sharemem单元_第1页
delphi在创建和使用dll的时候如果使用到string,请引入sharemem单元_第2页
delphi在创建和使用dll的时候如果使用到string,请引入sharemem单元_第3页
delphi在创建和使用dll的时候如果使用到string,请引入sharemem单元_第4页
delphi在创建和使用dll的时候如果使用到string,请引入sharemem单元_第5页
资源描述:

《delphi在创建和使用dll的时候如果使用到string,请引入sharemem单元》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、虽然Delphi小的string功能很强大,但若是您编写的Dll文件要供其它编程语言调用时,最好使用PChar类型。如果您要坚持使用string类型的参数时、变量甚至是记录信息时,就要引用ShareMem单元,而但这个单元必须是第一个引用的,即在uses语句后的第一个单元。下面通过一个项目示例來讲解怎么使用ShareMemo先新建一个DLL项目先新建一个DLL项目,然后再新建一个Unitl单元。工程文件是这样的libraryProject2;{ImportantnoteaboutDLLmemorymanagement:ShareMemmustbethefirstunit

2、inyourlibrary'sUSESclauseANDyourproject's(selectProject-ViewSource)USESclauseifyourDLLexportsanyproceduresorfunctionsthatpassstringsasparametersorfunctionresults.ThisappliestoallstringspassedtoandfromyourDLL-eventhosethatarenestedinrecordsandclasses.ShareMemistheinterfaceunittotheBORLNDM

3、M.DLLsharedmemorymanager,whichmustbedeployedalongwithyourDLL.ToavoidusingBORLNDMM.DLL,passstringinformationusingPCharorShortStringparameters.}usesShareMem,SysUtils,Classes,Unitlin'Unitl.pas1;{$R*.res}exportstest;beginend.单元文件里面实现了test函数unitUnitl;interfacefunctiontest(constinput:string):s

4、tring;stdcall;implementationfunctiontest(input:string):string;stdcall;beginResult:二'我是DLL中的test函数,输入是「+input;end;end.引入ShareMem的注意事项1.因为DLL中使用到string类型,所以一定要引入ShareMem单元。如果没有用到string就不需要ShareMem,但是为了保险起见,还是建议引入ShareMem单元2.以这个项目为例,注意要在DLL的项目文件中引入ShareMem单元,而不是在函数的声明和实现单元Unitl里面引入ShareMem单

5、元3.在项目文件中可能会引入很多单元,但是ShareMem单元一定耍第一个引入,为了第一个加载新建加载这个DLL的项口(生成可执行文件)先新建一个项目,然后再新建一个Unitl单元。上面的那个DLL的项目编译生成了Project2.dll动态链接库,将该动态链接库文件放到这个可执行项目的项目目录下方便加载项目文件的源码是这样的programProjectl;usesShareMem,Forms,Unitlin'Unitl.pas'{Forml};{$R*.res}beginApplication.lnitialize;Application.CreateForm(TFo

6、rml,Forml);Application.Run;end.单元文件的代码是这样的(这个单元文件中主要是窗体相关代码)unitUnitl;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls;typeTForml=class仃Form)btnl:TButton;procedurebtnlClick(Sender:TObject);private{Privatedeclarations}public{Publicdeclaratio

7、ns}end;varForml:TForml;implementation{$R*.dfm}procedureTForml.btnlClick(Ser)der:TObject);typeTAddc=function(constinput:string):string;stdcall;varhh:THandle;addc:TAddc;beginhh:=LoadLibraryCProject2.dll');tryifhh<>0then@addc:=GetProcAddress(hh,PChar('test'));ifnot(@addc=nil

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。