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

Delphi 调用 C# Dll 时一个编译问题 mscorlib_TLB.h Ambiguity between 'String' and 'System::String'

2012-09-03 22:04 399 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string delphi system dll c# byte