关于调用DLL的问题(100分)

  • 主题发起人 wangli611
  • 开始时间
W

wangli611

Unregistered / Unconfirmed
GUEST, unregistred user!
在调用DLL时,出现错误信息“access violation at address 00492807 in module
'project1.dll'.read of address FFFFFFFF”,不知该怎样解决?
 
stdcall;
not use string ,use widestring or point
 
是不是参数有问题,数量或类型有问题
 
我想在DLL中使用一个FORM,结果就出了错误。
用的是静态调用,最简单的方法。
 
呵呵,怎么一个问题连问两遍?

我想问题就出在你的DLL有Form上,
你的DLL中的FORM若是在工程的Auto-Create Forms里,
一定要把他移到Available forms 里,在要显示时再用Application的Createform创建。
 
(不好意思,问题发错了地方,怕高手见不到,所以只好浪费100分,再问一次。)
我把FORM 的位置移了,可又出现了另外的错误,‘raise exception class SOLeSysError.
with message "尚未调用CoInitialize"',这下可怎么办呢?

 
是不是你在DLL中用到了OLE?如果是这样的话,在DLL的开始时加入OLE初始化代码
OleInitialize(NULL);

你可以把你调用DLL的代码部分贴出来看看吗?
 
这是DLL的代码,webbrowser1是在FORM中定义的:
procedure myshow;
var form1:tform1;
begin
form1:=tform1.Create(application);
form1.Visible :=true;
form1.WebBrowser1.Navigate ('e:/my documents/h.htm');
end;
 
tab:
原来错误就在这里,谢谢。不过参数不是NULL,是NIL。
 
NULL是在BCB中的参数,在DELPHI中就用NIL拉。
 
嘿,嘿。。。
把另一个问题的分也给分了吧,呵呵!
 
顶部