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.
[Error] mscorlib_TLB.pas(5194): Type'Byte'is not yet completely defined
[Error] mscorlib_TLB.pas(5209): Type'Double'is not yet completely defined
[Error] mscorlib_TLB.pas(5235): Type'Int64'is not yet completely defined
[Error] mscorlib_TLB.pas(5267): Type'Single'is not yet completely defined
[Error] mscorlib_TLB.pas(5747): Illegal typein OLE automation section:'Byte'
[Error] mscorlib_TLB.pas(5754): Illegal typein OLE automation section:'Single'
[Error] mscorlib_TLB.pas(5755): Illegal typein OLE automation section:'Double'
[Error] mscorlib_TLB.pas(10874): Illegal typein OLE automation section:'Byte'
[Error] mscorlib_TLB.pas(10881): Illegal typein OLE automation section:'Single'
[Error] mscorlib_TLB.pas(10882): Illegal typein OLE automation section:'Double'
[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:
;;==============================================;;
;; Map mscorlib CoClasses to better names ;;
;;==============================================;;
[
{BED7F4EA-1A96-11D2-8F08-00A0C9A6186D}:TypeNames]
Byte=CLRByte
Double=CLRDouble
Single=CLRSingle
Int16=CLRInt16
Int32=CLRInt32
Int64=CLRInt64
String=CLRString
Object=CLRObject
Array=CLRArray
Enum=CLREnum
Boolean=CLRBoolean
Char=CLRChar
Guid=CLRGuid
Type=CLRType
Void=CLRVoid
Pointer=CLRPointer
Exception=CLRException