delphi写windows服务程序使用unidac连接sqlserver2000时报错OLE DB error occured. Code 800401F0h

delphi写windows程序使用unidac连接sqlserver2000时报错OLE DB error occured. Code 800401F0h查资料后,搜到如下解决方法:

服务单元引入activex单元,然后在服务执行函数中加入

CoInitializeEx(NIL,COINIT_MULTITHREADED);

CoUnInitialize; 

procedure TService.ServiceExecute(Sender: TService); 
begin 
CoInitializeEx(NIL,COINIT_MULTITHREADED);

.. 
// your code 
..

CoUnInitialize; 
end;

 

另外这两天用多线程调用c#的动态库,发现在线程的执行过程里边也要做上述处理,不然会报com未初始化的错误

procedure TFindThread.Execute;
var
  lobj: TTFindImage;
  isFind: boolean;
begin
  CoInitializeEx(nil,0);
  FLog.add('线程' + inttostr(FIdx) + '开始执行');
  FLog.Add('大图:' + FBigImg);
  FLog.Add('小图:' + FLittleImg);
  lobj := TTFindImage.Create(nil);
  isFind := (lobj.DefaultInterface as IFindImage).FindPostion(FBigImg, FLittleImg, '', 0);
  if isFind then FLog.Add('线程' + inttostr(FIdx) + '定位到小图')
  else FLog.Add('线程' + inttostr(FIdx) + '未定位到小图');
  FLog.add('线程' + inttostr(FIdx) + '执行结束');
 lobj := nil;
  CoUnInitialize;
end;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值