Tous les exemples que je peux trouver en utilisant DLLImport pour appeler le code C de C# passe ints avant et en arrière. Je peux obtenir ces exemples qui fonctionnent très bien. La méthode que j'ai besoin d'appeler prend deux structures comme ses paramètres d'importation, et je ne comprends pas exactement comment je peux faire fonctionner cela.Comment utiliser DLLImport avec des structures comme paramètres dans C#?
Voici ce que je dois travailler avec:
Je possède le code C++, donc je peux apporter des modifications/ajouts à ce que je dois.
Une application tierce va charger ma DLL au démarrage et s'attend à ce que DLLExport soit définie d'une certaine manière, donc je ne peux pas vraiment changer la signature de méthode qui est exportée.
L'application C# Je construis va être utilisé comme emballage pour 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 que je dois appeler ressemble à ce
DllExport int Calculate (const MathInputStuctType *input,
MathOutputStructType *output, void **formulaStorage)
Et MathInputStructType est défini comme le
suivanttypedef struct MathInputStuctTypeS {
int _setData;
double _data[(int) FieldSize];
int _setTdData;
} MathInputStuctType;
Merci beaucoup. Cela m'a donné assez de compréhension pour que le code fonctionne. –