Una manera sencilla de clase asumiendo Foo:
- Crear un proyecto de C++/CLI, llaman a esta FooWrapper.
- Haga que FooWrapper dependa del dll no administrado (como lo haría normalmente).
- Crea una clase gestionada ManagedFoo que contiene un único campo de instancia privada de tipo Foo *.
- proporcionan funciones de envoltura pública en ManagedFoo que se envían al campo de instancia subyacente.
- Opcionalmente (aunque se recomienda):
- parámetros convertir de expresiones idiomáticas .net (cadenas y similares) a los modismos C++ (std :: string o char *)
- captura excepciones no administrados y tirar los administrados en lugar
a continuación, hacer que el código C# depende de la FooWrapper proyecto/DLL y asegurar que el ll no administrado se implementa correctamente con él, cómo se hace eso depende de la DLL no administrado, pero en el mismo directorio que normalmente es suficiente .
Si las funciones no dependen de las instancias de la clase, entonces es aún más simple P/Invoke
¿Es una clase COM? –
Lo siento, debería haber sido más específico. Esta NO es una clase COM. Es solo una vieja clase de C++. – cjserio