我有一个主要基于C#项目的解决方案,但我偶尔需要使用用本机c ++编写的库。我解决这个问题的方法是让一个原生项目简单地充当本机库的包装器,在本例中是OpenCV(我知道我可以直接在C#中使用EMGUCV,但根据我的经验,它有一些我想要的错误避免,这更像是一个概念证明)。然后我有一个引用本机包装器的C ++ CLR项目,最后是一个引用C ++ CLR项目的C#项目。
严格来说,我可以直接从CLR项目引用OpenCV,而不是使用本机包装器项目,但我想以这种方式组织它以符合其他解决方案的组织方式,因为我可能在有些观点是出于另一个原因想要这种结构。
这种方法的第一个问题是我找不到Visual Studio在最终目标目录中自动包含本机包装器的dll的方法。从CLR项目引用本机项目可以完美地工作,并且从C#项目引用CLR项目没有问题,但是当我构建它时,它将无法运行,因为本机dll没有被带到最终目标。我通过添加一些post构建操作来复制本机dll和pdb文件来解决这个问题。这工作,我能够运行代码没有错误。但是,我无法调试本机项目。我在C#项目和CLR项目中遇到断点,但不是本机项目。
我尝试过:
答案 0 :(得分:1)
问题在于我之前提到的C#项目本身就是另一个C#exe项目调用的dll。当我为这个项目启用本机调试时,一切都按预期工作。