问题
使用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
平台才要这样用。