出现必须加载Dll的错误怎么办??????????????(50分)

  • 主题发起人 主题发起人 zulu
  • 开始时间 开始时间
Z

zulu

Unregistered / Unconfirmed
GUEST, unregistred user!
程序是这样
TestDll:=CoTestFormDll.Create; //创建连接
TestDll.Deh:='hello'; //给Deh属性赋值
其中,在Dll中的赋值过程是给Dll中的Form1中的Edit1赋值。
procedure TTestFormDll.Set_Deh(const Value: WideString);
begin
Form1.Edit1.Text:=Value;
end;

但是我注册了这个Dll啊。
难道不能这样访问Form中的Dll吗?
 
你这样连接要包含类型库的pas文件,你包含了吗?

你给的代码太少,说的也不清楚,说详细点吧。
 
简单地说就是怎样操作Dll中的Form
 
你的dll是进程内服务器吧?

如果是传统的dll,很简单的。
 
在DLL中写出操作窗体的外调函数就可以了。
 
给你一段代码,看看就明白了。
function runDll(Hdl: integer;StrMainWorkPath:String): integer; stdcall;
var f: TFaSongFrm;
begin
forms.Application.handle := Hdl;
FaSongU.Unit_StrMainWorkPath:= StrMainWorkPath;
f := TFaSongFrm.Create(nil);
result := 0;
try
f.Showmodal();
result := 1;
except
end;
f.Free;
end;
其中FaSongFrm是在DLL中存在的窗体。
 
Dll中的窗体不用注册.
要注册的是Com的Dll.
 
从你dll中的代码来看,好像是普通的dll,不是com dll。
但是从你最开始的代码:TestDll:=CoTestFormDll.Create来看,又是调用com的
写法。你如果只是想显示dll里的窗体,而且是普通dll的话,那么连接的方式就
不对把。还有就是你的代码里:
forms.Application.handle := Hdl;
//forms.Application? 应该不要forms把,改成Application.Handle;
FaSongU.Unit_StrMainWorkPath:= StrMainWorkPath;
f := TFaSongFrm.Create(nil);
//既然传来了Hdl,为什么不用? f:=TFaSongFrm.Create(Application);
//用nil会带来不少问题。
 
后退
顶部