2011-07-26 589 views
0

我正在尝试使用tlibimp.exe(版本11.0)导入第三方.NET类型库(COM服务器DLL)。这基本上可以正常工作,但是当我在不同的计算机上运行它时,结果会有所不同,其中一台运行Windows XP,另一台运行Windows 7.更糟的是,在Win7机器上生成的代码无法编译。tlibimp.exe输出在不同的操作系统上有所不同

两台机器有:

  • 的Borland C++(RAD Studio企业)2007
  • tlibimp.exe版本安装11.0
  • 同.NET framework版本(据我所知,2007年的Borland 使用.NET V2)
  • bcc32.exe版本5.93

编译器在OCX.h失败:

Parameter mismatch in write access specifier of property Font 

的代码XP的机器(其编译OK)上的相关的行是:

__property Graphics::TFont * Font={ read=GetTFontProp, write=_SetTFontProp, stored=false, index=-512 }; 

Win7的机器(其失败)在同一行中是:

__property IFontDisp* Font={ read=get_Font, write=set_Font, stored=false }; 

现在我不确定这种差异是从哪里来的。有任何想法吗?

欢呼 亨德里克

+0

.net COM服务器如何导出VCL'Graphics :: TFont'? –

+0

我不知道,但它似乎工作。这可能是一些Borland组件的包装魔法? – Hendrik

+0

我应该补充说,这个类的两个版本之间存在巨大差异,而不仅仅是一行。首先,WinXP版本继承了TOleControl,而Ole7的Win7 :: TOleServer – Hendrik

回答

0

这可能会或可能不会帮助,但我也有类似的问题,试图导入两个式库到Delphi中,从C调组件。

一个从TOLeServer继承的类型库(A),另一个来自TOleControl的(B),我看不出为什么,因为生成类型库的两个程序集几乎都是相同的。

问题原来是B已经注册regasm和A没有。注册A并重新生成类型库解决了问题。

相关问题