我使用VS2008在本机C ++中编写了一个ActiveX控件(OCX)。
当我附加到Microsoft ActiveX控件测试容器(TstCon32.exe)和我自己的引用该控件的本机cpp应用程序的线程时,我可以正确调试它。
但是,我无法通过将其附加到引用MyCtrlNameLib.dll
和AxMyCtrlNameLib.dll
控件的.NET winform应用程序的线程来调试它。它在我的断点上显示以下消息:
断点当前不会被击中。没有为此文档加载任何符号。消息
我想知道是否有办法调试.NET Winform应用程序引用的ActiveX控件。
我认为问题是我的.NET应用程序没有加载MyCtrlName.ocx,因此没有添加MyCtrlName.pdb。它会加载InterOp.MyCtrlNameLib.dll和AxInterOp.MyCtrlNameLib.dll。
答案 0 :(得分:1)
“我想知道是否有办法调试.NET Winfrom应用程序引用的ActiveXControl”
否,这是不可能的。
为什么呢?因为ActiveX是一个独立的组件,所以C#应用程序以二进制形式使用它。这个.NET应用程序绝对没有关于ActiveX内部实现的信息,它只知道它的接口,以便可以使用该组件提供的功能。
当我附加到Microsoft ActiveX控件测试容器(TstCon32.exe)和我自己的引用控件的本机cpp应用程序
的线程时,我可以正确调试它
因为调试ActiveX代码的唯一方法是附加到实际执行此代码的进程。
答案 1 :(得分:1)
非常感谢@LihO指出了正确的方向,我终于明白了。 解决方案非常简单: 只需转到我的activeX控件项目的属性。 在调试分支下,将“调试器类型”设置为“混合”,并且可以命中所有断点。