例如
在DLL中有一下函数:
(1)
function GetValue(aa:string);stdcall;
begin
end;
这种要加sharemem吗
(2)
function GetValue(var aa:string);
begin
end;
这种要加吗看了一下DLL最顶上的注释,好像只有在输出的变量为string时才要加sharemem啊
在DLL中有一下函数:
(1)
function GetValue(aa:string);stdcall;
begin
end;
这种要加sharemem吗
(2)
function GetValue(var aa:string);
begin
end;
这种要加吗看了一下DLL最顶上的注释,好像只有在输出的变量为string时才要加sharemem啊
解决方案 »
- Delphi 怎么样调用这个dll里面的函数?
- DirectShow无法显示画面,只能刷新后才能闪动一下
- 怎样加入新控件?
- 求 《windows核心编程》一书,万分感谢
- 一个frreport的小问题!在线等
- 用delphi开发单机版的软件,最好采用那种数据库
- 为何delphi5中database desktop工具中建数据库没有blob字段类型?
- 如果从机器A上要上传大量的数据到另外一台机器B上的话,该如何作?各位帮帮小女子。
- 哪位朋友有关于PLT图形文件的详细点的资料?
- 一个应届毕业生的困惑:是不是只有做mis才有前途?
- 只有20分了。是否能在程序中判断一个字段是索引?
- 请教:派生类如何向基类传递参数??
但是在dll与application之间,很有可能你application里的一个string内存在dll中被释放了,那么再到application去的时候,就会报错。
所以必须加sharemem协调string管理机制!
强烈建议楼主改成:
function GetValue(aa:PChar);
begin
ShowMessage(string(aa));
end;
调用时:
function DoDll;
var
p : Pchar;
begin
p := 'Helllo';//或用StrAlloc方法为pchar类型分配空间,或者用字符数组
GetValue(p);
end;
不想用SHareMM的话就用PChar代替吧。