问题
使用Delphi开发应用时,如果要在主程序和dll间传递字符串、对象等不兼容C的类型时,通常需要在主程序和dll工程的uses区第一个位置引用ShareMem单元,并将borlndmm.dll随应用一起发布使用。
Lazarus中也有ShareMem单元,说明也可以采用相同的策略解决同样的需求,但是并不是使用borlndmm.dll。
在源码sharemem.pp中可以看到const fpcmemdll = 'fpcmemdll.dll';,说明使用的是fpcmemdll.dll,但是这个dll实际上是并不存在的!
解决
全盘搜索并没有找到fpcmemdll.dll,但是却找到了fpcmemdll.pp。
打开fpcmemdll.pp后发现,其实这并不是一个普通的用于uses的单元,而是一个library工程单元,那么问题就好办了。
-
创建一个空白
library工程,并命名为fpcmemdll -
复制
fpcmemdll.pp内容到fpcmemdll.lpr -
构建
fpcmemdll.lpr得到fpcmemdll.dll
其它
linux平台似乎并没有ShareMem单元,也不存在以上用法,应该是只有windows平台才要这样用。