Все примеры, которые я могу найти, используя DLLImport для вызова кода C++ из C#, передают ints взад и вперед. Я могу заставить эти примеры работать нормально. Метод, который мне нужен, требует двух структур в качестве параметров импорта, и я не совсем понимаю, как я могу это сделать.Как использовать DLLImport с structs как параметры в C#?
Вот что я должен работать с:
у меня есть код C++, так что я могу делать какие-либо изменения/дополнения к нему, что мне нужно.
Приложение третьей стороны загрузит мою DLL при запуске и ожидает, что DLLExport будет определен определенным образом, поэтому я не могу реально изменить подписи метода, который будет экспортироваться.
Приложение C#, которое я создаю, будет использоваться в качестве обертки, поэтому я могу интегрировать эту часть C++ в некоторые из наших других приложений, которые все написаны на C#.
++ сигнатура метода C Мне нужно позвонить выглядит так
DllExport int Calculate (const MathInputStuctType *input,
MathOutputStructType *output, void **formulaStorage)
И MathInputStructType определяется как следующий
typedef struct MathInputStuctTypeS {
int _setData;
double _data[(int) FieldSize];
int _setTdData;
} MathInputStuctType;
Большое спасибо. Это дало мне достаточно понимания, чтобы заставить код работать. –