Comment puis-je utiliser DLLImport avec les structures en tant que paramètres en C#?

Tous les exemples que je peux trouver de l'aide DLLImport d'appeler du code C++ à partir de C# passe ints d'avant en arrière. Je peux obtenir ces exemples fonctionne très bien. La méthode que j'ai besoin d'appel prend deux structures que ses paramètres d'import, et je ne suis pas très clair comment je peux faire ce travail.

Voici ce que j'ai eu à travailler avec:

Je possède le code C++, donc je peux faire toutes les modifications/ajouts à ce que j'en ai besoin.

Un tiers de l'application va charger mes DLL au démarrage et qui attend la DLLExport être défini d'une certaine façon, donc je ne peux pas vraiment changer la signature de la méthode c'est l'obtention d'exportée.

L'application en C# je suis en train de construire va être utilisé comme un wrapper afin que je puisse intégrer cette C++ morceau dans certains de nos autres applications, qui sont tous écrits en C#.

Le C++ signature de la méthode, je dois appeler ressemble à ceci

DllExport int Calculate (const MathInputStuctType *input, 
    MathOutputStructType *output, void **formulaStorage)

Et MathInputStructType est définie comme suit

typedef struct MathInputStuctTypeS {
    int             _setData;
    double              _data[(int) FieldSize];
    int             _setTdData;
} MathInputStuctType;

OriginalL'auteur Jonathan Beerhalter | 2009-03-23