Estoy escribiendo una aplicación C# que debe leer las propiedades de video de los archivos de video. La única forma que he encontrado para hacerlo es con Microsoft Media Foundation que requiere C++.¿Puede un ensamblaje C++ administrado devolver un objeto a C#?
Hasta ahora, he hecho algunos progresos:
- He creado un ensamblado administrado C++ que compila a un archivo DLL.
- Puedo llamarlo, con un parámetro, desde el código C#.
- Ejecuta e imprime las propiedades del archivo de video.
Lo que me gustaría hacer a continuación es hacer que la DLL devuelva un objeto de propiedades de video (ancho, alto, duración, etc.). Dado que estoy usando código administrado C++, ¿hay alguna forma simple de definir un tipo de objeto y usarlo para pasar datos entre C# y C++ o tengo que usar la clase Marshal?
Puedo estar equivocado, pero creo que el objeto gestionado de C++ es comparable con C#. ¿Es tal vez C++ no administrado? Si C++ administrado usa objetos de Media Fundation no administrados, simplemente envuélvalos en el código administrado – EOG
"Puedo llamarlo, con un parámetro, desde el código C#". - ¿Cómo haces esto? COM Interop? –
Para llamar al código administrado C++, agregué el ensamblado como referencia. Luego, cargué el espacio de nombres con "usar". A partir de ese punto, puedo acceder al método C++ al igual que la clase estática de C#. – James