У меня есть DLL, написанная на C ++, и я хочу вызвать ее из C #. Функция выводит outputChar и deadChar, переменная deadChar также читается функцией C ++.
Я пытался вызывать функцию из C # по-разному, но все время получал AccessViolationException: «Попытка чтения или записи защищенной памяти. Это часто указывает на то, что другая память повреждена».
C ++ dll:
extern "C" _declspec (dllexport) int convertVirtualKeyToWChar(int virtualKey, PWCHAR outputChar, PWCHAR deadChar);
C # код 1:
[DllImport("keylib.dll")]
static extern int convertVirtualKeyToWChar(int virtualKey,
StringBuilder output,
StringBuilder deadchar);
C # код 2:
static extern int convertVirtualKeyToWChar(int virtualKey,
out char output,
ref char deadchar);