[delphi技术] 关于sharemem造成dll错误的处理办法

今天一直在研究delphi生成dll的技术,搞了一天,略知皮毛。

其中在测试时,发现如果程序和dll之间用string作为参数传递时容易出现错误,通过查询得知,这需要在程序的uses中使用sharemem。

但是测试了好多次都没有成功,最后发现是自己对此理解错误了,这个sharemem需要用在调用和被调用的情况时候都使用。往往我们会在主程序的时候忘掉了引用。切记主程序的.dpr文件中也要引用。

具体方法 project-view source 在uses后边加入 sharemem,

这中情况只发生在传递参数未string情况下(还有动态数组,还没研究到,呵呵)。其他情况下不用调用。

另外,我们需要注意一个问题。你用sharemem编译出的dll和程序,可能在你的机子上运行很正常,但是在一台没有安装delphi的机子上就会出问题。这是因为,你咋安装delphi的同时,把所需要的dll都安装了。

怎么解决这个问题?都安装一遍delphi?!!呵呵,理论上是可以的,当然世界上没有这么笨的人。

当 uses sharemem, 时,请把borlndmm.dll拷贝到应用文件的同一路径下。borlndmm.dll在delphi的安装路径下,可以搜索一下。


{Important note about DLL memory management: ShareMem must be the
  first unit in your library's USES clause AND your project'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 BORLNDMM.DLL shared memory manager, which must be deployed along
  with your DLL. To avoid using BORLNDMM.DLL, pass string information
  using PChar or ShortString parameters.} 
  
  已经说的很清楚了,如果的导出函数中参数或返回值有string类型,那么就需要引用ShareMem

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值