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

COM/OLE、旧代码和令人头痛的问题,com,ole,legacy,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-0050044A7E1

我现在生活在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来注册它


可能也被他的病毒扫描程序阻止。您可以搜索注册表。。。如果文件是从硬编码的文件路径加载的,则文件可能不在您期望的位置。。。(ie program files vs program files(x86))很可能是这样,但您知道这是dxDBGrid而不是其他组件吗?在我得到的所有DLL中,我想知道哪些包含什么。就像我说的,这是遗留代码,我还没有完全理解一切。。。他们不知道特定DLL中包含哪些GUID吗?是一个指向oleview的链接,它应该允许您在其中达到峰值。此外,与com组件关联的GUID应该是唯一的。因此,我在google中搜索guid,以查找哪个组件具有该clsid,这就是出现的内容。所以我有理由相信。为了帮助任何遇到类似问题的人,我遇到了这样的崩溃,我点击了正在卸载的
ocx
,依赖性行者打开了。它表明,
ocx
无法打开某个dll,当我将它放在正确的路径中时,程序运行时不会崩溃。