我正在尝试通过将其作为 COM 类型库导入来访问 Delphi 中的 .NET 程序集 (Position.dll)。一切似乎都可以导入,但生成的 Position_TLB.pas 文件仅包含创建类的函数。没有导入任何类方法或委托。
这就是我所做的。
1) 将 Position.dll 程序集添加到 GAC 中。
gacutil.exe -i Position.dll
2)注册程序集
regasm.exe Position.dll
3) 将程序集作为类型库导入 Delphi
所有导入的类看起来像这样:
IID__MyClass: TGUID = '{F53EAE3D-9EB8-1111-B1F7-5DB609FDBEAE}';
CLASS_MyClass: TGUID = '{E15581CD-FFF5-34CE-3434-D5484798900F}';
...
_MyClass = interface;
_MyClassDisp = dispinterface;
MyClass = _MyClass;
// *********************************************************************//
// Interface: _MyClass
// Flags: (4432) Hidden Dual OleAutomation Dispatchable
// GUID: {F53EAE3D-9EB8-1111-B1F7-5DB609FDBEAE}
// *********************************************************************//
_MyClass = interface(IDispatch)
['{F53EAE3D-9EB8-1111-B1F7-5DB609FDBEAE}']
end;
...
// *********************************************************************//
// DispIntf: _MyClassDisp
// Flags: (4432) Hidden Dual OleAutomation Dispatchable
// GUID: {F53EAE3D-9EB8-3538-B1F7-5DB609FDBEAE}
// *********************************************************************//
_MyClassDisp = dispinterface
['{F53EAE3D-9EB8-1111-B1F7-5DB609FDBEAE}']
end;
...
// *********************************************************************//
// The Class CoMyClass provides a Create and CreateRemote method to
// create instances of the default interface _P2100 exposed by
// the CoClass P2100. The functions are intended to be used by
// clients wishing to automate the CoClass objects exposed by the
// server of this typelibrary.
// *********************************************************************//
CoMyClass = class
class function Create: _MyClass;
class function CreateRemote(const MachineName: string): _MyClass;
end;
...
class function CoMyClass.Create: _MyClass;
begin
Result := CreateComObject(CLASS_MyClass) as _MyClass;
end;
class function CoMyClass.CreateRemote(const MachineName: string): _MyClass;
begin
Result := CreateRemoteComObject(MachineName, CLASS_MyClass) as _MyClass;
end;
MyClass 应该包含几个在 TLB 文件中看不到的方法和委托。
如果我在课堂上尝试代码完成,我会看到以下内容:
我错过了一些明显的东西吗?