Я упаковываю нативную библиотеку 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
s и другие недружественные .NET вещи, так есть ли способ предотвратить это?
Редактировать: То, что я узнал сегодня:
- Обозреватель объектов показывает все пространства имен в решении, а не только в каком-либо проекте, который вы просматриваете.
- Собственные классы C ++ не доступны в управляемых сборках.