【问题标题】:Access violation when creating ActiveX control after upgrading to C++Builder 11升级到 C++Builder 11 后创建 ActiveX 控件时访问冲突
【发布时间】:2021-12-19 09:44:59
【问题描述】:

以下代码在隐藏窗体上创建一个 ActiveX 组件。它适用于 C++Builder 10.4,但在使用 C++Builder 11.0 编译时会崩溃。

container = new TForm((TComponent*)NULL);
container->Visible = false;
softlock = new TCryptoLicense(container); // <= A.V.
softlock->Parent = container;

访问冲突发生在TControl的构造函数中CreateTouchManager之后,当它使用FTouchManager时。我已经尝试了以下没有帮助的方法:

  • 使表单可见
  • 向表单构造函数添加所有者
  • 在容器上调用HandleNeeded
  • 延迟创建,而不是在应用程序启动时

将组件拖放到新应用程序中的表单会导致在设计时发生相同的异常。

【问题讨论】:

  • 您是否尝试过单步调试 TCryptoLicense 构造函数?
  • @RogerCigol 是的,然后当你到达 TControl 构造函数时,它会在提到的点崩溃。
  • 所以也许你还没有贴出特别有用的代码sn-p。拥有 TCryptoLicense 的构造函数会更有用 - 因为这就是问题所在......
  • 异常在标准VCL代码的TControl(activex组件继承)的构造函数中。
  • 但是导致异常的原因很可能不在那个“标准”代码中。如果 TControl 构造函数失败,很少会起作用.....您需要发布导致此问题的代码片段....还要说明您正在使用哪个编译器....

标签: activex c++builder c++builder-11-alexandria


【解决方案1】:

将 ActiveX 控件重新导入到新包中解决了该问题。可能是 CB10 和 CB11 的一些数据搞混了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    相关资源
    最近更新 更多