¿Cómo usar un proyecto C ++ desde una aplicación .NET?

Soy un desarrollador habitual de .NET que apunta a integrar una biblioteca de C ++ en un proyecto .NET. Tengo algunas ideas, pero como soy nuevo en C ++ en general, no conozco los límites de la tecnología con la que estoy tratando de trabajar. El proyecto C ++ es esencialmente un procesador de sonido rápido que puede reproducir archivos de audio de múltiples pistas con un montón de diferentes trucos de postprocesamiento. Todo esto es genial, pero teniendo en cuenta que tengo una aplicación de .NET WinForms con la que quiero integrarme, las cosas empiezan a parecer desordenadas.

En primer lugar, el proyecto C ++ no tiene enlaces .NET o integración ActiveX / COM. Es un proyecto simple de MS VC ++ 9. Si debo trabajar con el proyecto en mi aplicación .NET, tendré queinterfaz con ello, es decir. cree instancias de clase, establezca propiedades, llame métodos, marque datos dentro y fuera, etc.

En segundo lugar, está diseñado para ejecutarse como una aplicación de Windows independiente y administra sus propias ventanas utilizando la API de MS Windows. Esto está bien, pero de alguna manera necesito la VM .NET.corriendo en segundo plano, administrando el programa y ejecutando todo mi código C #. No escribo C ++, así que necesito seguir con C # para crear una aplicación alrededor de esta biblioteca.

En tercer lugar, ya sea que esté ejecutando el mismo proceso que la versión C ++ o no, necesito una forma deconstruir / interfaz / depurar Estas 2 aplicaciones separadas como si fueran una. No tengo experiencia en la programación de C ++, excepto por el hecho de que he escrito un par de DLL de C ++ para la manipulación de datos de alto rendimiento.

Así que, muchas preguntas y ni idea de cómo empezar!

Puedo compilar completamente esta biblioteca y convertirla en un VC EXE, pero ¿cómo puedoco-compilar mi código .NET en él? O alternativamente, ¿cómo compilo el código C ++ en el EXE .NET para que se ejecute dentro de un entorno administrado? Tenga en cuenta que no fue diseñado para esto y puede comportarse mal si intento cambiar demasiado.

El principal problema esinterconectando con eso. Cómo puedoexponer ¿Algunas clases de C ++ para acceder desde .NET? Sé exactamente qué clases necesito y solo necesitaré un par de docenas de clases junto con sus métodos / propiedades relevantes para estar disponibles desde .NET. No me importa la letraclases de envoltura en .NET para ayudar a la máquina virtual .NET a comprender la estructura de clase de los bytes transferidos de ida y vuelta. Espero poder trabajar directamente con objetos C ++ desde un entorno administrado para que la mayoría de mi código pueda permanecer en .NET.

Incluso si lo ejecuto como una aplicación independiente, ¿tendría que recurrir a sockets o algo para comunicarme con él? Este es el peor de los casos y haré lo que sea para evitarlo.

Cualquier ayuda o punteros son apreciados, espero que yo mismo y mi tarea sea clara y que mis preguntas sean lo suficientemente específicas y respondibles. ¡Gracias por cualquier ayuda!

Editar: Si escribo clases de contenedor o las genero, ¿puedo usarP / Invocar para crear instancias de clase y métodos de llamada en ellos y hacer que ejecuten código C ++ nativo en segundo plano? ¿Dónde se almacenará y administrará la memoria para dichos objetos C ++? ¿Dentro del montón de .NET o fuera de él?

Respuestas a la pregunta(2)

Su respuesta a la pregunta