您的位置:首页 > 编程语言 > Delphi

Delphi6 调用 C# Dll 时一个编译问题

2008-01-24 11:22 1131 查看
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 type in OLE automation section: 'Byte'
[Error] mscorlib_TLB.pas(5754): Illegal type in OLE automation section: 'Single'
[Error] mscorlib_TLB.pas(5755): Illegal type in OLE automation section: 'Double'
[Error] mscorlib_TLB.pas(10874): Illegal type in OLE automation section: 'Byte'
[Error] mscorlib_TLB.pas(10881): Illegal type in OLE automation section: 'Single'
[Error] mscorlib_TLB.pas(10882): Illegal type in 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 ;;
;;==============================================;;
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
然后,重新打开Delphi,重新导入tlb文件,编译OK!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: