dll调用后为何会出现这样的提示?
在DLL unit里函数是这样的:
function ShowTime():string;stdcall;
implementation
function ShowTime():string;
begin
Result :=DateToStr(Date());
end;
调用的时候是这样写的:
function ShowTime():string;stdcall;external 'DllTest.dll';
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(ShowTime());
end;
结果是:显示提示信息后出现这样的提示"Invalid pointer operation."
请大家帮忙看下
问题点数:50、回复次数:8Top
1 楼leeky(雅痞·千年虫)回复于 2006-03-17 10:23:20 得分 10
問題大約出在返回類型string上,
请试着改String为String[100],
我不想花時間去试,请自己試驗一下。Top
2 楼keiy()回复于 2006-03-17 10:32:31 得分 0
1.不要用string作为dll的参数或返回值,改用pchar
2.不要在dll中返回字串,改用参数Top
3 楼keiy()回复于 2006-03-17 10:40:08 得分 30
重写一下,供参考,DLL:
procedure ShowTime(const p:pchar);stdcall;
begin
strcopy(p,pchar(DateToStr(Date())));
end;
调用:
procedure TForm1.Button1Click(Sender: TObject);
var
p:pchar;
begin
getmem(p,100);
ShowTime(p);
ShowMessage(p);
freemem(p);
end;
Top
4 楼SpeedyHorse(鑫磊)回复于 2006-03-17 10:41:52 得分 0
楼上的兄台,能不能帮我上面的改下,我刚学用DLL,谢谢!Top
5 楼WangZWang(先来)回复于 2006-03-17 10:45:44 得分 10
在调用的单元中加入
uses ShareMem;Top
6 楼SpeedyHorse(鑫磊)回复于 2006-03-17 10:48:13 得分 0
谢谢楼上的兄台,这样的可以,再请教一下,dll中能写函数吗?还是只能用过程?Top
7 楼keiy()回复于 2006-03-17 11:02:00 得分 0
当然可以写函数,不过最好不要返回字串变量,返回integer,double等不会有问题Top
8 楼SpeedyHorse(鑫磊)回复于 2006-03-17 11:09:04 得分 0
谢谢各位!Top
相关问题
- 我在VB中调用VC下写的DLL为何总是提示:
- DLL问题?“DLL 调用约定错误”提示。
- 动态调用DLL出错为何?
- 我动态调用DLL的函数出现如下提示
- 100分 调用DLL文件错误提示:Exception:EResNotFound in Module DLL.dll at000318C4
- 调用DLL出错,提示 unhandled exception in md5exe.exe (MD5DLL.DLL): 0xC0000005: Access Violation
- 急问:vb调用Activex dll 出现如下提示?
- VB调用DLL时出错,提示"bad dll calling convention"!!什么原因?
- DLL的调用
- dll的调用?




