Мне нужно создать большую библиотеку C++, доступную для использования на языках .NET, таких как C#.Создание библиотеки C++ Avaiable .Net
В библиотеке представлено большое количество классов, которые можно разбить на две группы. Refrence подсчитал классы, которые реализуют абстрактный класс IRefCounted и используют фабричный метод для их создания, а также простые классы с использованием new/delete.
В adittion есть много простых функций.
Origenannly Я просто собирался писать классы-оболочки для всего в C++/clr. Однако желательно, чтобы полученные библиотеки оболочек работали над Mono. Перекомпиляция библиотеки и обертки для каждой платформы в порядке, однако проблема в том, что похоже, что C++/clr может ориентироваться только на окна, поскольку нет компилятора для таргетинга на другие платформы, и, таким образом, код оболочки не будет работать с другими форматами. ..
Есть ли что-то, что я пропустил здесь (например, как запустить C++/clr на x-платформе) или есть альтернативный способ сделать все функции C++, структуры и классы доступными для C#?
EDIT: К комплекту я имею в виду доступен для использования, например, сказать, в моем C++ Lib я имел
//namespace maths{
class Vector2
{
public:
float x,y;
Vector2();
Vector2(const Vector&);
Vector2(float x, float y);
float Dot();
//operators
...
};
Тогда в C# идентификатор, чтобы иметь возможность использовать его как обычный класс, например
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++, все должно быть сделано как оболочка вокруг существующих классов и функций.
Я не знаю, как C# напрямую использовать классы C++ в статических и динамических библиотеках, а также многие, реализованные непосредственно в файлах заголовков. Вот почему я собирался использовать C++/clr, так как он может использовать unmanged C++ и предоставить интерфейс для использования C#. Однако, похоже, это ограничено окнами ... –