Мне нужно сделать большую библиотеку c ++ доступной для использования на языках .Net, таких как C #.
Библиотека содержит большое количество классов, которые можно разбить на две группы. Классы с подсчетом ссылок, которые реализуют абстрактный класс IRefCounting и используют фабричный метод для их создания, и просто простые классы, использующие new / delete.
В объявлении есть много простых функций.
Изначально я собирался написать классы-обёртки для всего на c ++ / clr. Однако желательно, чтобы полученные библиотеки-обертки работали на Mono. Перекомпиляция библиотеки и оболочки для каждой платформы - это хорошо, однако проблема в том, что кажется, что c ++ / clr может ориентироваться только на окна, поскольку для него нет компилятора, предназначенного для других платформ, и, следовательно, код оболочки не будет работать на других паттернах. ..
Есть ли что-то, что я здесь упустил (например, как запустить c ++ / clr для руководства по платформе x) или есть альтернативный способ сделать все функции, структуры и классы c ++ доступными для C #?
РЕДАКТИРОВАТЬ: Под доступным я подразумеваю доступное для использования, например, скажем, в моей c ++ lib у меня было
//namespace maths{
class Vector2
{
public:
float x,y;
Vector2();
Vector2(const Vector&);
Vector2(float x, float y);
float Dot();
//operators
...
};
Тогда в C # id хотелось бы использовать его как обычный класс, например
maths::Vector2 a = new maths::Vector2(5, 5);
maths::Vector2 b = new maths::Vector2(1, 10);
b *= 3
maths::Vector2 c = a + b;
//c.x == 8, c.y == 35
Кроме того, как бы я это ни делал, я не могу редактировать библиотеку c ++, все должно быть сделано как обертка вокруг существующих классов и функций.