从一个CLI / C ++托管包装器导出两个略有不同的名称空间

时间:2018-12-25 08:59:10

标签: c# c++ visual-studio-2017 namespaces

我有一个本地C ++库,已在CLI / C ++中为其创建了托管包装。在我决定使用其他子命名空间扩展它之前,它一直运行良好。从我的C#.NET项目中看不到新的名称空间。 这是一个类似的结构:

namespace A
{
    namespace B
    {
        public ref class X {...};
        public ref class Y {...};
        public ref class Z {...};
    }
}
namespace A
{
    namespace C
    {
        public ref class X {...};
        public ref class Y {...};
        public ref class Z {...};
    }
}

当我将其导入C#.NET项目时,在对象浏览器中我可以看到AB和AC名称空间,但是intellisense以及编译器告诉我,没有这样的名称空间“ A.C”。

我尝试重命名名称空间,发现最后一个重命名的名称空间都变得可见,而另一个名称空间变得不可见。就像我将A.C重命名为A.D一样,突然我可以访问A.D,但现在无法访问A.B。然后我将A.B重命名为A.E,然后突然发现A.E可见,而A.D不可见。

我在做什么错了?

更新:我从CLI / C ++代码中删除了所有“使用”语句,并在本地解决了必要的依赖项(例如System :: String等),因为我怀疑这可能是因为我使用其他命名空间的方式可能导致了我的问题。答案是不。我仍然遇到同样的问题。

更新2:我给了自己一个答案,因为我认为自己可以解决此问题,但最后删除了它。我认为部分问题是我将嵌套的名称空间组织到了子文件夹中,这些子文件夹中的文件名完全相同,因此编译器只考虑了一个文件名。 我认为一个可行的解决方案是,如果我在完全相同的标头和cpp文件中声明并定义两个嵌套的名称空间,并且彼此相邻。我待会再试。

0 个答案:

没有答案