我有一个主要基于 C# 项目的解决方案,但我偶尔需要使用用本机 C++ 编写的库。我解决这个问题的方法是拥有一个本地项目,它只是作为本地库的包装器,在这种情况下是 OpenCV(我知道我可以直接在 C# 中使用 EMGUCV,但根据我的经验,它有一些我想要的错误避免,这更像是一个概念证明)。然后我有一个引用本机包装器的 C++ CLR 项目,最后是一个引用 C++ CLR 项目的 C# 项目。
严格来说,我可以直接从 CLR 项目中引用 OpenCV,而不是拥有本机包装器项目,但我想以这种方式组织它,以符合解决方案其余部分的组织方式,并且因为我可能在某些时候想要具有这种结构的另一个原因。
这种方法的第一个问题是,我找不到让 Visual Studio 自动将本机包装器的 dll 包含在最终目标目录中的方法。从 CLR 项目引用本机项目可以完美地工作,从 C# 项目引用 CLR 项目没有问题,但是当我构建它时,它不会运行,因为本机 dll 没有被带到最终目标。我通过添加一些后期构建操作来复制本机 dll 和 pdb 文件来解决这个问题。这行得通,我可以无错误地运行代码。但是,我无法调试本机项目。我在 C# 项目和 CLR 项目中打断点,但没有在本机项目中打断点。
我尝试过的:
问题是我之前提到的 C# 项目本身就是一个被另一个 C# exe 项目调用的 dll。当我为这个项目启用本机调试时,一切都按预期工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句