4

我使用 VS2008 在本机 C++ 中编写了一个 ActiveX 控件 (OCX)。

当我附加到 Microsoft ActiveX 控件测试容器 (TstCon32.exe) 的线程和我自己的引用该控件的本机 cpp 应用程序时,我可以正确调试它。

但是,我无法通过将其附加到引用控件的 .NET winform 应用程序的线程来调试它MyCtrlNameLib.dllAxMyCtrlNameLib.dll。它在我的断点上显示以下消息:

当前不会命中断点。没有为此文档加载任何符号。信息

我想知道是否有办法调试 .NET Winform 应用程序引用的 ActiveX 控件。

我认为问题是我的 .NET 应用程序没有加载 MyCtrlName.ocx,因此没有添加 MyCtrlName.pdb。它改为加载 InterOp.MyCtrlNameLib.dll 和 AxInterOp.MyCtrlNameLib.dll。

4

2 回答 2

1

“我想知道是否有办法调试 .NET Winfrom 应用程序引用的 ActiveXControl”

,这是不可能的。

为什么?因为 ActiveX 是一个独立的组件,所以您的 C# 应用程序以二进制形式使用它。这个 .NET 应用程序完全没有关于 ActiveX 内部实现的信息,它只知道它的接口,以便可以使用这个组件提供的功能。

当我附加到 Microsoft ActiveX 控件测试容器 (TstCon32.exe) 的线程和我自己的引用控件的本机 cpp 应用程序时,我可以正确调试它

因为调试 ActiveX 代码的唯一方法是附加到实际执行此代码的进程。

于 2013-03-14T15:03:15.093 回答
1

非常感谢@LihO 为我指出了正确的方向,我终于成功了。解决方案非常简单:只需转到我的 activeX 控件项目的属性。在Debug分支下,将“ Debugger Type ”设置为“ Mixed ”,所有断点都可以命中。

于 2013-03-14T16:06:16.280 回答