请问用delphi编写dll时(代码如下),为什么调用时会错误,说是错误指针调用,请问如何更改程序才能实现正确调用

shazhi 2003-03-05 01:07:47
请问用delphi编写dll时(代码如下),为什么调用时会错误,说是错误指针调用,请问如何更改程序才能实现正确调用
library tempdll;
uses
SysUtils,
Classes;

{$R *.res}

function dbstr(strTmp:string):string;StdCall;
begin
result:=strTmp + strTmp;
end;

exports
aaaa;
end.
...全文
23 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
newfang 2003-03-30
  • 打赏
  • 举报
回复
凑个热闹:
我做了一个dll,在D6中运行没问题,但在VFP6中不能被调用??
bugcool 2003-03-30
  • 打赏
  • 举报
回复
来晚了
用PCHAR吧
hot3000 2003-03-30
  • 打赏
  • 举报
回复
library tempdll;
uses
Sharemem,//在这里要加
SysUtils,
Classes;
//.........
project1 //注意这是项目文件。不是单元文件
uses
ShareMem, //在这里要加
..
yzdiyu 2003-03-12
  • 打赏
  • 举报
回复
用pchar
chkdsk21 2003-03-12
  • 打赏
  • 举报
回复
Exports dbstr;
darkhorsedba 2003-03-08
  • 打赏
  • 举报
回复
不用装d也可用,dll的目的就是工具无关性
ehom 2003-03-08
  • 打赏
  • 举报
回复
当然不是
shazhi 2003-03-08
  • 打赏
  • 举报
回复
是不是用delphi编写的dll在没有装delphi的机器中不能用?

dll文件要注册才能用,是不是?怎样注册??但是在机器中装了delphi6之后,却能用.是不是意味着用delphi编写的dll不装delphi的机器是不是不能用的?就该怎么办?
shazhi 2003-03-07
  • 打赏
  • 举报
回复
ok !! 谢谢
ehom 2003-03-06
  • 打赏
  • 举报
回复
function dbstr(strTmp:PChar):PChar;StdCall;
begin
Result:=PChar(StrPas(strTmp) + StrPas(strTmp))
end;

or

function dbstr(strTmp:PChar):PChar;StdCall;
begin
GetMem(Result,2*Length(strTmp));
StrCopy(Result,strTmp);
StrCat(Result,strTmp);
FreeMem(Result)
end;
shazhi 2003-03-06
  • 打赏
  • 举报
回复
用ShortString在Delphi中调用没有问题,但是在VB中调用还是会出错,如果改为PChar,则怎样编写这个Dll,如何在delphi中调用,本人对指针的了解可说是一无所知,请给出详细代码和说明.谢谢!
ehom 2003-03-06
  • 打赏
  • 举报
回复
用ShortString(255个字符以内)或PChar(传递指针),为了保持和系统的兼容性,建议PChar!因为String是Delphi中定义的字符串对象,内存分配方面和其他数据类型不同,需要传递内存的所属关系,所以要Uses ShareMem单元,它封装了Borlndmm.dll(内存管理器)的接口
shazhi 2003-03-06
  • 打赏
  • 举报
回复
请给出代码好吗?

hot3000 2003-03-05
  • 打赏
  • 举报
回复
是在project(项目)文件中uses 的第一个单元加入ShareMem

chenbin 2003-03-05
  • 打赏
  • 举报
回复
将String改为PChar
shazhi 2003-03-05
  • 打赏
  • 举报
回复
还是不行,其错误一样,function dbstr(strTmp:string):string;StdCall;
如果改为function dbstr(strTmp:string):integer;StdCall;则没事,那位高手指点,是不是dll不能返回string类型
BES 2003-03-05
  • 打赏
  • 举报
回复
在DLL與調用程序中Uses的第一個單元包括 ShareMem 單元

5,931

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧