tlibimp.exe 输出在不同的操作系统上有所不同
Posted
技术标签:
【中文标题】tlibimp.exe 输出在不同的操作系统上有所不同【英文标题】:tlibimp.exe output differs on different OSes 【发布时间】:2011-07-26 15:06:07 【问题描述】:我正在尝试使用 tlibimp.exe(版本 11.0)导入第三方 .NET 类型库(COM 服务器 DLL)。这基本上可以正常工作,但是当我在不同的计算机上运行它时,结果会有所不同,一台运行 Windows XP,另一台运行 Windows 7。更糟糕的是,在 Win7 机器上生成的代码无法编译。
两台机器都有:
Borland C++ (RAD Studio) 2007 tlibimp.exe 版本 11.0 安装了相同的 .NET 框架版本(据我所知, Borland 2007 使用 .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 ;
现在我不确定这种差异来自哪里。有什么想法吗?
干杯 亨德里克
【问题讨论】:
.net COM 服务器如何导出 VCLGraphics::TFont
?
我不知道,但它似乎工作。可能是一些 Borland 组件包装器的魔法吗?
我应该补充一点,有问题的类的两个版本之间存在巨大差异,而不仅仅是一行。首先,WinXP 版本继承自 TOleControl,Win7 继承自 Oleserver::TOleServer
我知道在较新的 Windows 版本中拥有或拥有 problems 的其他工具。然而,在 xp 上生成的输出总是在较新的 Windows 版本中工作。也许 tlibimp 也是如此。
【参考方案1】:
这可能有帮助,也可能没有帮助,但我在尝试将两个类型库从 c sharp 程序集导入到 delphi 时遇到了类似的问题。
一个类型库 (A) 从 TOLeServer 继承,另一个 (B) 从 TOleControl 继承,我不明白为什么,因为生成类型库的两个程序集几乎相同。
问题原来是 B 已经注册了 regasm 而 A 没有。注册A并重新生成类型库解决了这个问题。
【讨论】:
以上是关于tlibimp.exe 输出在不同的操作系统上有所不同的主要内容,如果未能解决你的问题,请参考以下文章
为啥 JSON 中 datetime 的行为在不同系统(win xp,server 2003)上有所不同?
NSLinguisticTagger 在 Mac 和 iOS 上给出不同的输出
OpenLayers-如果从文件系统或Web服务器上查看,地图比例会有所不同