2

我是新来的C++在Visual Studio中。从C++应用程序调试一个动态加载的C++/CLI DLL

我开发出一种带有VS溶液:

  • 一个C++/CLI DLL项目(A)
  • 一个C++控制台项目(B),它动态地加载A,使用LoadLibraryW

当我运行BI需要在A内进行调试。但A代码中的断点不起作用,它们有一个警告标志符号,表示无法在此处打破。

我已经尝试了许多设置,但没有任何工作。这不是一件容易的事吗?谢谢!

+0

项目>属性>调试>调试器类型=混合。和工具>选项>调试>常规,勾选类似于“管理兼容模式”的那个。 LoadLibrary不会奇迹般地启用托管代码,CLR需要先加载并初始化。使用COM或自定义CLR托管。或者如果你确实真的必须使用__declspec(dllexport)入口点。你不需要,例外很难处理。 –

+0

@HansPassant这不是你第一次救我! :) 非常感谢你。将Debugger Type设置为Mixed解决了它。 “使用托管兼容模式”已被选中。您能否将您的评论发布为答案,我可以接受吗?无论如何,我使用__declspec(dllexport),否则我不能GetProcAddress我的DLL方法...我不知道其他方式... – bluish

+0

@HansPassant好吧,我会发布它...无论如何,我不明白有人给我的downvote – bluish

回答

3

由于@HansPassant,解决的办法是设置该属性:

  • 项目>属性>调试>调试器类型=混合
  • 工具>选项>调试>常规,勾选“使用管理兼容模式”。

LoadLibrary不会奇迹般地启用托管代码,CLR需要先加载并初始化。