Wszystkie przykłady, które można znaleźć przy użyciu DLLImport do wywoływania kodu C++ z C# przechodzi ints iz powrotem. Mogę sprawić, żeby te przykłady działały dobrze. Metoda, której potrzebuję, wywołuje, pobiera dwie struktury jako parametry importu i nie wiem dokładnie, jak mogę to wykonać.Jak korzystać z DLLImport z structs jako parametry w C#?
Oto co mam do pracy z:
Jestem właścicielem kodu C++, więc mogę zrobić jakieś zmiany/dodatki do niego, że muszę.
Aplikacja strony trzeciej ładuje moją bibliotekę DLL podczas uruchamiania i oczekuje, że definicja DLLExport zostanie zdefiniowana w określony sposób, więc nie mogę zmienić podpisu metody, który został wyeksportowany.
Aplikacja C#, którą buduję, będzie używana jako opakowanie, więc mogę zintegrować ten fragment C++ z niektórymi z naszych innych aplikacji, które są napisane w języku C#.
C++ metoda podpis Muszę zadzwonić wygląda to
DllExport int Calculate (const MathInputStuctType *input,
MathOutputStructType *output, void **formulaStorage)
I MathInputStructType jest zdefiniowana jako następujące
typedef struct MathInputStuctTypeS {
int _setData;
double _data[(int) FieldSize];
int _setTdData;
} MathInputStuctType;
Dziękuję bardzo. Dało mi to dość zrozumienia, aby kod działał. –