Я должен выставить некоторые классы C++ C# (я основываюсь на Linux, с помощью моно, таким образом, COM не является опцией),
Данные, которые я собрал до сих пор, свидетельствуют, что лучший способ приблизиться к этому:
У меня есть следующие вопросы:
Вы не можете создавать классы C ++ /. NET в Linux с помощью Mono. Mono не поддерживает Managed C ++ или C ++ / CLI, поэтому нет способа «написать оболочку C ++. Net класс вокруг класса ISO C ++».
Лучшим вариантом для этого является создание C API для вашего класса C ++, доступ к которому можно получить через Platform Invoke .
При этом одним из вариантов упрощения этого является использование SWIG для создания оберток для вас. Он поддерживает создание оболочек C # из классов C ++ (а также оболочек для других языков) и хорошо работает в Linux / Mono.
Редактировать:
Официальное сообщение «Mono не поддерживает смешанный режим C ++ / CLI» см. На странице Языки :
Важно отметить, что любой язык, компилируемый в чистый IL должен работать под Mono.Некоторые языки, такие как Microsoft Managed C ++, не всегда компилируются в чистый IL, поэтому они не всегда будут работать должным образом, поскольку они не являются полностью независимыми от платформы.
C ++ / CLI для нативного взаимодействия требует не-чистого IL, поэтому он не будет работать в Mono.
вам нужно было написать управляемую оболочку C ++ вокруг вашего iso-класса C ++, как этот
public ref class MyWrapper
{
public:
MyWrapper (void)
{
pObj = new CMyUnmanagedClass();
}
~MyWrapper (void)
{
delete pObj;
}
int foo(void)
{
//pass through to the unmanaged object
return pObj->foo();
}
private:
CMyUnmanagedClass* pObj;
};
Надеюсь, эта помощь касается