I have written an Assembly that also exposed itself as a COM object using
C#.NET.

When I am trying to do "Import Type Library" from Delphi 6 Pro I am
receiving these errors when trying to compile.


Delphi6 调用 C# Dll 时一个编译问题[Error] mscorlib_TLB.pas(5194): Type 'Byte' is not yet completely defined
Delphi6 调用 C# Dll 时一个编译问题[Error] mscorlib_TLB.pas(
5209): Type 'Double' is not yet completely defined
Delphi6 调用 C# Dll 时一个编译问题[Error] mscorlib_TLB.pas(
5235): Type 'Int64' is not yet completely defined
Delphi6 调用 C# Dll 时一个编译问题[Error] mscorlib_TLB.pas(
5267): Type 'Single' is not yet completely defined
Delphi6 调用 C# Dll 时一个编译问题[Error] mscorlib_TLB.pas(
5747): Illegal type in OLE automation section: 'Byte'
Delphi6 调用 C# Dll 时一个编译问题[Error] mscorlib_TLB.pas(
5754): Illegal type in OLE automation section: 'Single'
Delphi6 调用 C# Dll 时一个编译问题[Error] mscorlib_TLB.pas(
5755): Illegal type in OLE automation section: 'Double'
Delphi6 调用 C# Dll 时一个编译问题[Error] mscorlib_TLB.pas(
10874): Illegal type in OLE automation section: 'Byte'
Delphi6 调用 C# Dll 时一个编译问题[Error] mscorlib_TLB.pas(
10881): Illegal type in OLE automation section: 'Single'
Delphi6 调用 C# Dll 时一个编译问题[Error] mscorlib_TLB.pas(
10882): Illegal type in OLE automation section: 'Double'
Delphi6 调用 C# Dll 时一个编译问题[Fatal Error] TestCOM_TLB.pas(
60): Could not compile used unit 'mscorlib_TLB.pas' 

.Net defines some types that are defined in VCL. Download Managed VCL and use mscorlib_tlb.pas from there - it is in source and even in trial version. Or open $(Delphi)\Bin\tlibimp.sym in notepad (backup existing version first) and add:

Delphi6 调用 C# Dll 时一个编译问题;;==============================================;;
Delphi6 调用 C# Dll 时一个编译问题;; Map mscorlib CoClasses to better names       ;;
Delphi6 调用 C# Dll 时一个编译问题;;
==============================================;;
CLRException

然后,重新打开Delphi,重新导入tlb文件,编译OK!

相关文章: