Visual Studio 混合项目调试
Visual Studio mixed projects debugging
我有一个主要基于 C# 项目的解决方案,但我偶尔需要使用用本机 c++ 编写的库。我解决这个问题的方法是通过拥有一个本机项目,该项目仅充当本机库的包装器,在本例中为 OpenCV(我知道我可以直接在 C# 中使用 EMGUCV,但根据我的经验,它有一些我想避免的错误,无论如何这更像是一个概念证明)。然后,我有一个引用本机包装器的 C++ CLR 项目,最后是一个引用C++ CLR 项目的 C# 项目。
严格来说,我可以直接从 CLR 项目中引用 OpenCV,而不是使用本机包装器项目,但我想以这种方式组织它,既符合解决方案其余部分的组织方式,又因为我可能在某些时候出于其他原因想要这种结构。
这种方法的第一个问题是,我找不到一种方法让Visual Studio自动将本机包装器的dll包含在最终目标目录中。从 CLR 项目引用本机项目可以完美运行,从 C# 项目引用 CLR 项目也没有问题,但是当我生成它时,它不会运行,因为本机 dll 不会带到最终目标。我通过添加一些后期构建操作来复制本机 dll 和 pdb 文件来解决此问题。这有效,我能够运行代码而不会出错。但是,我无法调试本机项目。我在 C# 项目和 CLR 项目中遇到了断点,但没有在本机项目中遇到断点。
我尝试过的:
- 在 C# 项目属性中,我启用了本机代码调试选项。
- 在CLR项目中,我将调试模式设置为混合。
- 在本机项目中,我尝试了仅本机和混合调试模式
- 在我检查过的 C# 项目中允许不安全的代码
- 在 Visual Studio 中的工具->选项>调试->常规下,我尝试检查和取消选中使用本机兼容模式并禁止模块加载时的 jit 优化。
- 我尝试在单独的 Visual Studio 实例中打开本机项目,以将调试器附加到从整个解决方案运行的项目,但不允许我这样做,因为解决方案调试器已附加到该项目。有人建议这样做,但没有解释如何做到这一点。
问题是我之前提到的 C# 项目本身就是另一个 C# exe 项目调用的 dll。当我为此项目启用本机调试时,一切都按预期工作。
相关文章:
- 在linux上调试巨大的C++项目
- 如何在大型c++项目的可视化代码中设置调试
- Android Studio-在现有的旧项目中启用本机C++调试(card.io Android Source)
- 如果您在C++上有 Makefile 项目,如何在 VScode 中"fix"调试器?
- 简单的cmake项目,在Windows上使用nmake构建没有调试符号
- Eclipse 中的 Makefile 项目可以运行,但不能调试,为什么?
- Visual Studio 混合项目调试
- 在 Visual Studio 2017 C++项目中设置调试/运行环境变量
- QT项目在配置文件上崩溃,与发布和调试器一起运行
- CLION将调试限制为项目功能
- QT5构建/调试项目未更新/否更改
- Libboost后缀适合发布/调试项目设置
- 同时编译和调试C 项目
- 调试可视化C++复杂项目
- Visual Studio/C++:基于启动调试模式生成的非依赖项目的生成
- 运行调试库项目时发布库出错
- 在VS2010中启用跨项目调试
- 在 Eclipse 中调试 Ubuntu 上的C++项目不会在断点处停止
- 无法调试 c++ 项目,因为无法静态库启动程序 *.lib
- 使用Google Test调试c++项目时禁用异常处理