Все примеры, которые я могу найти, используя DLLImport для вызова кода C ++ из 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;