CreateOleObject的问题,高手来看看。(200分)

  • 主题发起人 主题发起人 cola
  • 开始时间 开始时间
C

cola

Unregistered / Unconfirmed
GUEST, unregistred user!
最近做了一个Automation的DLL,所有的返回值和参数都是用的PChar,但是在调用时发现了问题,如:
var
Obj: Variant;
Ver: String;
begin
Obj := CreateOleObject('MyOleDll.Common');
//MyOleDll.Common中有一函数,GetVer(FileName: PChar):PChar;
Ver := Obj.GetVer([red]'C:/MyProject'[/red]);
//这时系统运行时报参数类型错误,后来发现PChar在Com中不能做参数和返回值!其它都行,主要可能是在Variant中不能解释PChar长度
//如果工程包含TLB声明则可以调用,但是,我们不能够去包含它。
//但我们的ComDll要被VC和Delphi调用,所以必须用PChar,请问解决办法?
end;

 
参数作为pChar到可以理解,为什么返回值也做成了pChar了?
地址如何分配呀。
 
对于普通DLL而言,你这样做是对的,但对于COM而言,你必须使用OLE兼容的类型,所以你应该
使用BSTR类型,对于DELPHI和VC这样的支持COM的语言来说是绝对没问题的
 
zm30,你说的是对的,谢谢。
 
后退
顶部