2

共有三个项目:

  • 项目 A(我的项目,WPF .NET 4.5)
  • 项目 B(带 CLR 的托管 C++(FANN 库的 .NET 包装器))
  • 项目 C(用 C 制作的非托管项目,(FANN 库))

在打开项目 A 的 Visual Studio 2012 中,我无法通过项目 B 进入项目 C。

项目 B 和 C 是免费和开源的,我已经成功构建了它们。

项目 A 引用了项目 B 的 DLL,如果找不到项目 C 的 DLL 文件,项目 A 将无法运行 - 所以我已将项目 C 的 DLL 复制并粘贴到项目中,并将“始终复制”设置为输出目录。

在调试过程中进入时,我只能访问项目 B 的源代码。我什至没有看到模块窗口中加载了我完全不理解的项目 C。如果没有包含项目 C 的 DLL,该项目将无法运行,并且当它被包含时,它不会加载,但所有调用都在工作,因此必须在某处加载它。

我试图将项目 C 的 PDB 文件包含到项目 A 的输出目录中,但没有成功,从项目 B 到项目 C 的函数调用仍然会被跳过并且永远不会进入。

注意:

  • 仅我的代码已禁用
  • 项目 C 以两种方式包含在项目 B 中 - 一个“lib”文件(在链接器设置中)和它在源代码中的“.h”文件被引用......我不知道这是否是问题,但是你可能会。

我知道必须有办法实现这一点,我拥有所有可用的源代码,但我不是 C 或 C++ 代码方面的专家,也不是调试它的专家。我尝试将所有各种项目 C 的文件从 bin 目录包含到项目 A 中,但无法使其正常工作。

感谢您的任何帮助或建议!

4

1 回答 1

6

如果您使用的是 Visual Studio,则必须显式启用调试非托管代码。你可以从

解决方案资源管理器 -> csproj -> 属性 -> 调试 -> 启用非托管代码调试

于 2012-12-28T13:36:10.177 回答