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
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
相关文章推荐
- Delphi6 调用 C# Dll 时一个编译问题
- Delphi程序调用C#.Net编译的DLL并打开窗体(详解)
- Delphi调用C#dll的问题
- c#调用delphi写的dll遇到并解决的问题
- Delphi调用C#dll的问题
- C# 调用delphi生成Dll的相关问题
- VC调用Delphi写的dll的一个问题的处理
- C#调用Delphi DLL获取字符串(C# IntPtr 与 string互转 )
- C#编译问题'System.Collections.Generic.IEnumerable' does not contain a definition for 'Where' and no extension method 'Where' accepting a first argument
- c#下调用VC dll 的一个问题
- 将C语言编译成DLL并用C#进行调用以及关于从C#传输中文路径到C的DLL中打开文件的问题
- C#调用DELPHI的DLL时传递string数组
- C#调用delphi dll接口问题
- C#调用Delphi DLL时,要注意的几个问题。
- c#调用c++编译的dll的移植问题
- C/C++/C#问题记录(一)VS2012编译调用dll项目找不到lib的workaround
- 我用C#调用C编译的dll中有这样一个函数,函数大概的功能就是把数据保存到buf缓冲区中:
- Delphi程序调用C#.Net编译的DLL并打开窗体(详解)
- C#.NET常见问题(FAQ)-如何将cs文件编译成dll文件 exe文件 如何调用dll文件
- Delphi程序调用C#.Net编译的DLL并打开窗体(详解)