情况是这样的: 写这样一个MTSAutoObject:
  1. 新建一个 ActiveX library:   MyCOM.dll
  2. 新建一个 Transaction Object:接口命名为 IMyBizImpl
 
  此时,保存文件后,自动生成有 
   Inteface IMyBizImpl
   coClass  MyBizImpl
   class TMyBizImpl = class(TMtsAutoObject, IMyBizImpl)我的需要是,这个TMyBizImpl还需要实现另外一个接口 IMyBiz, 其定义在另外一个类库MyBiz.dll中并且,需要从coClass层次修改,就是coClass MyBizImpl 实现了2个接口:IMyBizImpl 和 IMyBiz,并且设置 IMyBiz为默认接口。
如果只是在 实现单元修改 class TMyBizImpl为 class TMyBizImpl = class(TMtsAutoObject, IMyBizImpl, IMyBiz) 生成的MyCOM.dll安装后,看不到IMyBiz接口
  
Delphi6 中我没有找到导入(引用)外部类库的方式,那个Project/Import type library好像不是满足这种需求的...最终, 偶追求的 COM接口定义单元 应该是这样的 呵呵 :unit MYCom_TLB;// ************************************************************************  //
// Type Lib: D:\TestWork\MYCom.tlb (1)
// LIBID: {CBB5673A-3B5A-49A5-945A-529A4B0D38D2}
// LCID: 0
// Helpfile: 
// DepndLst: 
//   (1) v2.0 stdole, (C:\WINNT\system32\Stdole2.tlb)
//   (2) v1.1 MyBiz,  (d:\TestWork\mybiz.dll)
//   (3) v4.0 StdVCL, (C:\WINNT\system32\stdvcl40.dll)
// ************************************************************************ //
{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers. 
{$WARN SYMBOL_PLATFORM OFF}
{$WRITEABLECONST ON}
{$VARPROPSETTER ON}
interfaceuses Windows, ActiveX, Classes, Graphics, MYBIZ_TLB, StdVCL, Variants;
  // *********************************************************************//
// GUIDS declared in the TypeLibrary. Following prefixes are used:        
//   Type Libraries     : LIBID_xxxx                                      
//   CoClasses          : CLASS_xxxx                                      
//   DISPInterfaces     : DIID_xxxx                                       
//   Non-DISP interfaces: IID_xxxx                                        
// *********************************************************************//
const
  // TypeLibrary Major and minor versions
  MYComMajorVersion = 1;
  MYComMinorVersion = 0;  LIBID_MYCom: TGUID = '{CBB5673A-3B5A-49A5-945A-529A4B0D38D2}';  IID_IMyBizImpl: TGUID = '{FB7DFD75-20E3-428C-874F-586EED57FC9C}';
  CLASS_MyBizImpl: TGUID = '{79EBC2F4-96A0-46FE-A028-CF9403B4D68F}';
type// *********************************************************************//
// Forward declaration of types defined in TypeLibrary                    
// *********************************************************************//
  IMyBizImpl = interface;
  IMyBizImplDisp = dispinterface;// *********************************************************************//
// Declaration of CoClasses defined in Type Library                       
// (NOTE: Here we map each CoClass to its Default Interface)              
// *********************************************************************//
  MyBizImpl = IMYBiz;
// *********************************************************************//
// Interface: IMyBizImpl
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {FB7DFD75-20E3-428C-874F-586EED57FC9C}
// *********************************************************************//
  IMyBizImpl = interface(IDispatch)
    ['{FB7DFD75-20E3-428C-874F-586EED57FC9C}']
  end;// *********************************************************************//
// DispIntf:  IMyBizImplDisp
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {FB7DFD75-20E3-428C-874F-586EED57FC9C}
// *********************************************************************//
  IMyBizImplDisp = dispinterface
    ['{FB7DFD75-20E3-428C-874F-586EED57FC9C}']
  end;// *********************************************************************//
// The Class CoMyBizImpl provides a Create and CreateRemote method to          
// create instances of the default interface IMYBiz exposed by              
// the CoClass MyBizImpl. The functions are intended to be used by             
// clients wishing to automate the CoClass objects exposed by the         
// server of this typelibrary.                                            
// *********************************************************************//
  CoMyBizImpl = class
    class function Create: IMYBiz;
    class function CreateRemote(const MachineName: string): IMYBiz;
  end;implementationuses ComObj;class function CoMyBizImpl.Create: IMYBiz;
begin
  Result := CreateComObject(CLASS_MyBizImpl) as IMYBiz;
end;class function CoMyBizImpl.CreateRemote(const MachineName: string): IMYBiz;
begin
  Result := CreateRemoteComObject(MachineName, CLASS_MyBizImpl) as IMYBiz;
end;end. ps: 上面这些代码,是现有的(已离职的同事写的),所以是正确的,我想重新创建出来。 问题概括说,就是 COM+需要实现外部引入接口,并且设置该接口为默认接口,如何引入此外部类库.上

解决方案 »

  1.   

    最近 好像类库处理 依赖类库(depndLst) 还有父类库(parent type library)这些Delphi6环境下如何设置的。
      

  2.   


    最近 好像类库除了 依赖类库(depndLst) 还有父类库(parent type library)这些Delphi6环境下如何设置的。
      

  3.   

    引用类库很简单:在tlb编辑器里 view/type library 里,Module层有个USE Tab页,你在其中点击右键,显示所有类库,从列表中选择就可以。所以你要引用的类库需要事先注册了的。设置父类库,偶从来没用过,不知,期待高手解答,期望高手首先说说是什么场合需要使用父类库,感觉和引用是很相似的 :)
      

  4.   

    楼主是要实现自己定义的接口IMyBizImpl和另外一个接口IMyBiz?
     先导入入MyBiz.dll, 然后创建com对象时从接口中选择imybiz接口为默认接口
     然后最后定义IMyBizImpl, 加入即可
     
     这是我的想法, 没有实现,
     不知是否可行?