2013-03-05 55 views
5

我真的一直在抨击这个问题上的谚语墙。从VS2010中的模块列表中缺少的DLL

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

我经常调用C++的DLL,它是在从通过P /调用C#项目编制。没问题。尽我所知,通过*.sln文件以及C++和C#文件所有必需的调试器设置都已正确设置。 注:我经常可以调试类似的P/Invoked C++代码而不会出现问题!

当然,我想,也许,这些符号不加载 - 然而,在打开的窗口中的模块,我发现,在其中我试图步DLL甚至没有上市!在我的C#程序中运行函数确实使用DLL(我得到了正确的输出),但是在观察模块窗口时,DLL仍然不出现。

有没有人知道发生了什么?


TL;博士

我有与调试P /调用C++经验相当数量。但是,我希望调试的DLL甚至不出现在Modules列表中(所以如果VS调试器似乎完全不知道它的存在,我显然无法步入它)。

+0

我们如何重现您的场景? – 2013-03-05 22:12:41

+0

您是否设置了“混合模式”调试? I.e没有列出的本机(即C++模块)或列出的,只是不是你想要调试的那个? – 2013-03-05 22:15:12

+0

David:不幸的是,我无法轻松地重现该场景,因为这是我从模块列表中唯一一次缺少dll的时间! Matt:我设置了C++项目中的混合模式调试,并将Attach设置为Yes。在C#项目中,C++项目被列为依赖关系。同样在C#项目中,选中“启用非托管代码调试”。问题是,当代码被调用时,即使在调试>模块屏幕下,也没有列出任何C++ dll。 你们有没有见过这个?感谢您的提示! – 2013-03-06 15:45:58

回答

8

我的猜测是,你有没有打开调试对于非托管代码做。转到启动项目的Properties-> Debug选项卡。选中“启用非托管代码调试”。

+0

你好,马特!谢谢你的提示!选中启用非托管代码调试。 – 2013-03-06 15:46:32

+1

注意:这需要设置在实际的启动项目或* .exe本身(现在看起来很痛苦,但回想起来似乎很明显,尽管尝试解决这个问题时并不那么多),而不是特定的C#项目P /调用C++。 – 2013-03-06 19:12:15