COM/OLE、旧代码和令人头疼的问题

标签 com ole legacy

我目前生活在 90 年代,我收到了这段遗留代码。我对 COM/OLE/MFC/ATL 不了解,所以我问这个问题,希望当时有经验的人可以帮助我找出这个问题。

  • 我拥有的是这个非常古老/遗留的 MFC/ATL 应用程序。
  • 它启动,但最终在 CFormView::HandleInitDialog (atlmfc\src\mfc\viewform.cpp) 中崩溃

我得到的调试输出是这样的:

CoCreateInstance of OLE control {6A24B340-7634-11D3-A5B0-0050044A7E1A} failed.
>>> Result code: 0x80040154
>>> Is the control is properly registered?

我知道这是由于某些组件注册失败或解决方案造成的,但我不知道如何弄清楚这种依赖性是什么,我有一个有效的旧代码可执行文件,也许我可以使用一些逆向工程来弄清楚是否缺少任何 DLL,但我真的不知道,我知道 OLE 是什么,我非常感谢您提供有关如何调试它的帮助。

最佳答案

看起来像是 dxDBGrid.dll。 OLE 只是对象链接和嵌入。您需要找到 dxDBGrid.dll 并确保它已注册。你可以使用 regsvr32 来注册它。

explanation of regsvr32

关于COM/OLE、旧代码和令人头疼的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8390147/

相关文章:

windows - 如何关闭打开的 OLE 对话框

delphi - 无法将类型 (Null) 的变体转换为类型 (OleStr)

MySQL legacy 到 Rails 的迁移转换

c++ - InvokeHelper 正在调用哪个函数

c++ - 是否可以在不在注册表中注册的情况下创建和使用 COM 类?

c++ - 跨另一个进程共享进程内 COM 对象

iphone - iOS StoreKit 旧版/升级支持的最佳实践是什么?

javascript - 如何在浏览器中将遗留 JavaScript 与 NodeJS 集成

c# - 在没有头文件的情况下声明 COM 接口(interface)指针