createoleobject函数不可以在dll里调用?(来者有分)
我创建了一个dll,这个dll只有两个函数 setiis(webname:pchar;vpath:pchar),和delweb(webname:pcahr).不过当主程序调用这中间任一个函数的时候都会报错
eolesyserror with message "标记没有引用存储".
具体情况是:
1 系统环境 windows profession 2000,delphi6
2 如果把这两个函数代码原本拷到应用程序里直接使用则没有问题,而且运行正常
3 两个函数的内容为
function setiis(webname:pchar;vpath:pchar):boolean;stdcall;
var
WebSite,webs, WebServer, WebRoot, VDir: oleVariant;
path,s:pchar;
begin
s:=pchar(webname);
path:=pchar(vpath);
result:=false;
WebSite:=CreateOleObject('IISNamespace'); //-------->运行到这里就出 现 "标记没有引用存储"的错误
WebS:=WebSite.GetObject('IIsWebService','localhost/w3svc');
WebServer:=WebS.GetObject('IIsWebServer','1');
WebRoot:=WebServer.GetObject('IIsWebVirtualDir','Root');
VDir:=WebRoot.Create('IIsWebVirtualDir',string(s));
VDir.AccessRead:= True;
vdir.accesswrite:=true;
VDir.Path:=string(path);
VDir.SetInfo;
result:=true;
end;
=======================================================
function delweb(webname:pchar):boolean;stdcall;
var
existvdir,WebSite,webs, WebServer, WebRoot, VDir: oleVariant;
s:string;
begin
s:=string(webname);
result:=false;
WebSite:=CreateOleObject('IISNamespace');
WebS:=WebSite.GetObject('IIsWebService','localhost/w3svc');
WebServer:=WebS.GetObject('IIsWebServer','1');
WebRoot:=WebServer.GetObject('IIsWebVirtualDir','Root');
try
WebRoot.Delete('IIsWebVirtualDir', s);
result:=true;
finally
begin
end;
end;
end;
4 dll的设置文件:
library createiis;
uses
SysUtils,
Activex,
ComObj,
Classes,
fn_cls in 'fn_cls.pas';
exports
delweb,setiis;
{$R *.res}
begin
end.
5.fn_cls.pas 的文件
unit fn_cls;
interface
uses
comobj,windows;
function setiis(webname:pchar;vpath:pchar):boolean;stdcall;
function delweb(webname:pchar):boolean;stdcall;
implementation
{-这里就是上面所说两个函数的实现-}
.
.
.
我不明白为什么会这样.难道dll里不能调用createoleobject这个函数,可是我看过一下帖子,也这么用阿(虽然也有出错,但是不是我碰到的这个问题.)