我正在包装一个本地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
以及其他.NET不友好的东西,所以有什么方法可以阻止这种情况发生吗?
编辑:我今天学到的东西:
答案 0 :(得分:1)
为了托管调试程序的利益,很可能在元数据中列出了本机类,但它们应标记为internal
,并且不能被使用者代码使用。