代码之家  ›  专栏  ›  技术社区  ›  Mike Caron

在C++/CLI项目中导出的原生命名空间?

  •  0
  • Mike Caron  · 技术社区  · 14 年前

    我正在包装一个本地C++库,用于CLR的消费。然而,我遇到了一个奇怪的。。。有问题吗?

    本机库的标头如下所示:

    namespace Foo {
        class Bar {
        public:
            Bar();
    
            //etc...
    
        };
    }
    

    所以,要使用这个类,我有自己的类定义:

    #include "Foo/Bar.h"
    
    namespace FooNet {
        public ref class Bar {
        private:
            Foo::Bar * m_Impl;
    
        internal:
            Bar(Foo::Bar *);
    
            //etc...
    
        };
    }
    

    这一切都很好。但是,当我将生成的程序集引用到C#项目中(例如)并查看对象浏览器时,我注意到它包含 只有我的CLR类( FooNet::Bar ) ,还有本地类( Foo::Bar )我也是

    我并不特别热衷于公开本机类,因为它们使用指针和 std::string

    编辑:我今天学到的东西:

    1. 本机C++类是
    1 回复  |  直到 9 年前
        1
  •  1
  •   Ben Voigt Caesar    14 年前

    为了便于托管调试器,本机类很可能列在元数据中,但它们应该被标记 internal 消费者代码无法使用。