у меня есть внешняя dll (с документацией по C++ по ее использованию), и мне нужно использовать внутри нее некоторые функции из моей программы C#.
Я написал небольшую обертку для некоторых функций, и они работают хорошо, но я не знаю, как обернуть функции, которым нужен указатель на функцию в качестве параметра.
В документации С++ говорится:
uint NativeFunction(uint32 parameter, GenericFunction *func)
Поскольку GenericFunction
должен получить 2 * char в качестве параметров, я написал это на С#:
public struct GenericFunction
{
public string param1;
public string param2;
}
[DllImport("externalLib.dll", SetLastError = true)]
public static extern uint NativeFunction(uint parameter, GenericFunction func);
И когда мне нужно позвонить, я использую
GenericFunction test = new GenericFunction();
uint result = NativeFunction(0u, test);
с этим у меня есть эта уродливая ошибка:
Попытка чтения или записи защищенной памяти. Это часто указывает на то, что другая память повреждена.
Я почти уверен, что неправильно вызываю функцию, так как мне все еще нужно определить, что GenericFunction
делает, но я понятия не имею, как это сделать, и на этот раз google мне не помогает!