在调试期间进入 c++/CLI 包装器 dll 和 c# dll,同时在 firebreath 上制作插件

Posted

技术标签:

【中文标题】在调试期间进入 c++/CLI 包装器 dll 和 c# dll,同时在 firebreath 上制作插件【英文标题】:Step into c++/CLI wrapper dll and c# dll during debug while making plugins on firebreath 【发布时间】:2013-05-23 09:54:27 【问题描述】:

构建一个 firebreathplugin,其中有一个本地 dll、c# 类库 dll 和一个 c++/CLI(类库)包装器 dll。这里没有申请。看到堆栈溢出的其他帖子。调试混合模式.but 是徒劳的吗? 更新

1.  in c# dll properties I have "Enable unmanaged code debugging" unchecked 
2. in c++/CLI wrapper dll properties, I have set Debug mode as mixed and set Attach to Yes
3. in native c++ plugin dll (firebreath generated) I set Properties->Debugging>Debug Mode->Mixed and Attach as "Yes"

c++/cli wrapper dll 的编译器是 /clr,而原生 c++ 的编译器设置为“不支持 /clr” 为此使用本地 WINDOWS 调试器 要调试插件,我只是按照 firebreath 主页中描述的步骤进行操作(即单击 Debug 菜单,然后单击 Attach to process..我选择了 iexplore.exe) 希望我能尽快得到答复?

【问题讨论】:

所有的dll/exe是否都是用相同的VS版本、相同的配置和平台编译的? 是的@stijn 先生!与 2010 年相比 “调试混合模式”。详细描述你做了什么。查看“模块”窗口——您是否在列表中同时看到本机和托管 dll? @Matt Smith 是的,我在本机 c++ 插件 dll 的属性中看到了这两个模块 @PratikPattanayak,不确定您所说的“在本机 c++ 插件 dll 的属性中”是什么意思。连接后,转到 Debug->Windows->Modules,看看是否所有预期的 dll 都显示在那里。 【参考方案1】:

这些设置都不重要除非其中一个项目是启动项目(即解决方案资源管理器中的粗体项目)。启动项目的设置很重要。

或者,如果您不想更改启动项目,那么您可以执行“附加到进程”并指定哪些类型(托管、本机等)。

【讨论】:

我将通过附加到浏览器@Matt Sir 的进程来运行该插件。所以那个浏览器是我的启动。你不觉得吗?在我的插件开发中。解决方案。先生,没有启动项目。 @PratikPattanayak,那么,您是使用 Debug->Attach to Process 附加到浏览器吗?如果是这样,它在哪里说“附加到:”它说什么?您可以通过按“选择”按钮将其设置为要调试的适当类型。 我知道,所以我做了同样的事情...通过在按 Debug->Attach to 后选择浏览器 iexplore.exe 的进程。我只是说设置为 YES 的选项“附加” .附加选项可以在项目的属性->调试->附加中找到。 @PratikPattanayak,您没有回答我的问题:当您执行调试->附加到进程时,它显示“附加到”:列出了什么?您正在谈论的 Attach 选项是 meaningless 除非(a)您直接从 Visual Studio 开始调试(您是 NOT)并且 (b) 项目是 Start- up 项目(它是 NOT)。 同意。我忘了在问题中写附加到进程!你从进程列表中选择了 iexplore.exe。我知道没有启动项目。所以你找到修复了吗?谢谢顺便恢复

以上是关于在调试期间进入 c++/CLI 包装器 dll 和 c# dll,同时在 firebreath 上制作插件的主要内容,如果未能解决你的问题,请参考以下文章

如何为非托管 c dll 创建 c++\cli 包装器

在Visual Studio 2010中将Native / C ++ DLL链接到托管C ++ / CLI包装器

调整 MFC dll 以在 C++/CLI 包装器中使用

MFC dll 中的访问冲突(用 C++/CLI 包装)从 C# 程序开始

C++/CLI 包装器尝试使用 MFC CObject 继承

原生 C/C++ 代码的 C++/CLI 包装器,无法在 Unity3D 中加载