【问题标题】:tlibimp.exe output differs on different OSestlibimp.exe 输出在不同的操作系统上有所不同
【发布时间】: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 也是如此。

标签: c++ .net c++builder com-server


【解决方案1】:

这可能有帮助,也可能没有帮助,但我在尝试将两个类型库从 c sharp 程序集导入到 delphi 时遇到了类似的问题。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-04
    • 2014-09-09
    • 2018-05-27
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    相关资源
    最近更新 更多