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 服务器如何导出 VCL Graphics::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服务器上查看,地图比例会有所不同

Fortran OPEN 调用在 NFSv3 和 NFSv4 上有所不同

为啥这两个结构在受生命周期影响的方式上有所不同

[SDOI2011]染色