VS2010 模块列表中缺少 DLL

Posted

技术标签:

【中文标题】VS2010 模块列表中缺少 DLL【英文标题】:DLL Missing from Modules List in VS2010 【发布时间】:2013-03-05 21:23:30 【问题描述】:

我真的一直在用头撞到众所周知的墙上。

我有一个同时包含 C# 和 C++ 代码项目的解决方案。

我经常调用 C++ DLL,它们是通过 P/Invoke 从 C# 编译到这个项目中的。没问题。据我所知,通过 *.sln 文件以及 C++ 和 C# 文件进行的所有必需的调试器设置都已正确设置。注意:我经常能够毫无问题地调试类似的 P/Invoked C++ 代码!

当然,我想,也许是符号没有加载——然而,在打开模块窗口时,我发现我试图进入的 DLL 甚至没有列出!在我的 C# 程序中运行该函数确实使用了 DLL(我得到了正确的输出),但是,在查看 Modules 窗口时,DLL 仍然没有出现。

有人知道发生了什么吗?

tl;dr --> 我在调试 P/Invoked C++ 方面有相当多的经验。但是,我希望调试的 DLL 甚至没有出现在模块列表中(所以如果 VS 调试器似乎完全不知道它的存在,我显然无法进入它)。

提前致谢!!

干杯!

-卡达杰

【问题讨论】:

我们如何重现您的场景? 您是否设置为“混合模式”调试?即没有列出或列出一些本机(即 C++ 模块),只是不是您要调试的那个? David:不幸的是,我无法轻松重现该场景,因为这是我唯一一次在模块列表中缺少 dll! Matt:我准备在 C++ 项目中进行混合模式调试,将 Attach 设置为 Yes。在 C# 项目中,C++ 项目被列为依赖项。同样在 C# 项目中,选中启用非托管代码调试。问题是,当调用代码时,即使在 Debug > Modules 屏幕下,也没有列出任何 C++ dll。你们中的任何一个人以前见过吗?感谢您迄今为止的提示! 启动项目设置是最重要的(启动项目是在解决方案资源管理器中加粗的项目)。 that 项目的调试设置是否设置为“启用非托管代码调试”?另一件要尝试的事情是启动进程,并从调试器附加到它,看看你是否得到不同的行为。 ^这解决了它!非常感谢,马特!我错误地认为只有调用 C++ dll 的 C# 项目才需要此设置。好吧,本身并没有假设,但是我没有想到,在您启发我之后,现在看起来很明显-> *** C# 启动项目(即运行的 *.exe)是什么需要设置此标志。 【参考方案1】:

我的猜测是您没有为非托管代码打开调试。转到启动项目的属性->调试选项卡。勾选“启用非托管代码调试”。

【讨论】:

你好,马特!谢谢你的提示!启用非托管代码调试已选中。 注意:这需要在实际的启动项目或 *.exe 本身上设置(现在回想起来似乎很痛苦,尽管在尝试解决它时没有那么多),而不是特定的 C# 项目 P/调用 C++。

以上是关于VS2010 模块列表中缺少 DLL的主要内容,如果未能解决你的问题,请参考以下文章

VS2010 未能找到元数据文件(dll)错误解决方法

vs2015 编译时错误列表中没有错误,dll却没有生成出来

vs2010发布时去除msvcp100 dll和msvcr100 dll图解说明

修复“您的计算机中缺少 MSVCP110D.dll”问题

如何解决vs2015运行缺少ucrtbased.dll的问题

VS2010的报错提示:无法加载DLL“libarcsoft_fsdk_face_detection.dll”:找不到指定的模块。(异常来自HRESULT:0x8007007E)。