1

我觉得这是一个愚蠢的问题,但我似乎无法找出答案。我目前有一个正在加载和使用 DLL 的 C++ 应用程序(我使用 VS 2010 编译了应用程序和 DLL)。我很肯定它正在使用 DLL,因为 a)如果我重命名 DLL,我会得到一个未找到的异常,并且 b)它显示的输出仅来自 DLL 内部(我可以更改它以查看输出更改) .

我的问题是调试时在 Visual Studio 的“模块”窗口中,似乎没有加载 DLL。因此,显然它没有符号,我无法设置断点......但这对我来说没有任何意义,因为它显然使用的是 DLL。

我见过其他几个类似的问题,答案通常是看代码是原生的、托管的还是混合的,并相应地设置“附加到进程”字段。我已经尝试了那里的所有选项,并确保我的 Debugger Type 设置为“Mixed”(尽管我也尝试过 Native & Managed,只是为了验证这些都不能解决问题)。

有没有人有什么建议?

提前致谢!

4

2 回答 2

3

这发生在我身上,我找到了项目->属性->调试页面并单击了启用本机代码调试的框。我正在做一个访问 C++ / 本机 dll 的 C# 项目

布达沃德

于 2018-04-12T13:37:23.193 回答
0

我有一些想法:

  1. 检查输出窗口是否缺少 DLL 符号。
  2. 确保 dllname.pdb 文件存在于 DLL 旁边
  3. 确保 Visual Studio 解决方案有两个项目(EXE、DLL)项目
  4. 切换到 DEBUG 模式而不是 RELEASE 模式。
  5. 运行进程资源管理器(从 MS 下载)并检查运行时绑定到 EXE 的 DLL 的路径。

最后的最终解决方案:

  1. 打开 Process Explorer 并搜索您的 DLL 名称。
  2. 查找哪个 EXE 正在使用它。
  3. 转到 VS 并将您的调试器附加到该 EXE。

我希望其中任何一个都能解决您的问题

于 2013-09-13T02:01:19.610 回答