我在DLL文件中写了一个连接数据库函数,但一调用这个函数,就报错“尚未调用coinitialize”.
函数如下:
function connect(km,bm,su,sp:string):boolean; stdcall;
begin
try
adoc:=Tadoconnection.Create(application);
adoc.connected:=false;
adoc.LoginPrompt:=false;
adoc.ConnectionString:='Provider=SQLOLEDB.1;Password='+#39+sp+#39+
';Persist Security Info=False;User ID='+su +
';Initial Catalog='+ bm +
';Data Source='+km;
adoc.Connected:=true;
result:=true;
except
adoc.Connected:=false;
result:=false;
end;end;
函数如下:
function connect(km,bm,su,sp:string):boolean; stdcall;
begin
try
adoc:=Tadoconnection.Create(application);
adoc.connected:=false;
adoc.LoginPrompt:=false;
adoc.ConnectionString:='Provider=SQLOLEDB.1;Password='+#39+sp+#39+
';Persist Security Info=False;User ID='+su +
';Initial Catalog='+ bm +
';Data Source='+km;
adoc.Connected:=true;
result:=true;
except
adoc.Connected:=false;
result:=false;
end;end;
下面的例子是一个DLL的导出函数,DLL中使用了ADO组件,
注意,在最上头,uses activex;
procedure ShowSbSearch;stdcall
begin
CoInitialize(nil);
dtmd := Tdtmd.Create(nil);
frmSbSearch := TfrmSbSearch.Create(nil);
try
frmSbSearch.ShowModal;
finally
frmSbSearch.Free;
dtmd.Free;
end;
CoUninitialize;
end;exports ShowSbSearch;