Todos los ejemplos que puedo encontrar usando DLLImport para llamar al código C++ desde C# pasan ints hacia adelante y hacia atrás. Puedo hacer que esos ejemplos funcionen bien. El método que necesito llamar toma dos estructuras como sus parámetros de importación, y no estoy exactamente claro cómo puedo hacer que esto funcione.¿Cómo uso DLLImport con structs como parámetros en C#?
Esto es lo que tengo que trabajar con:
I poseer el código C++, por lo que pueden hacer los cambios/adiciones a lo que necesitan.
Una aplicación de terceros va a cargar mi DLL al inicio y espera que el DLLExport se defina de cierta manera, por lo que realmente no puedo cambiar la firma del método que se está exportando.
La aplicación C# que estoy construyendo se va a utilizar como un contenedor para que pueda integrar esta pieza de C++ en algunas de nuestras otras aplicaciones, todas escritas en C#.
El C++ firma del método necesito llamar ve así
DllExport int Calculate (const MathInputStuctType *input,
MathOutputStructType *output, void **formulaStorage)
Y MathInputStructType se define como la siguiente
typedef struct MathInputStuctTypeS {
int _setData;
double _data[(int) FieldSize];
int _setTdData;
} MathInputStuctType;
Muchas gracias. Esto me dio suficiente comprensión para que el código funcione. –