У меня есть проблема, я пытался посмотреть почти на все постерные решения, но не нашел подходящего.
Вопрос прост: хотите иметь возвращаемую строку из неуправляемого кода C в моем управляемом C #.
Функция c:
extern "C" __declspec(dllexport) int process_batch (char *&result);
и в C # я импортировал DLL:
[DllImport("mydll.dll")]
public static extern IntPtr process_batch(StringBuilder result);
Я запускаю, но возвращаемое значение в моем StringBuilder представляет собой строку из 7-8 символов без смысла! (Я думаю адрес памяти)
Я попытался добавить ref перед StringBuilder, на этот раз я получаю правильное возвращаемое значение в StringBuilder, но получаю AccessViolationException:
Попытка чтения или записи защищенной памяти. Это часто указывает на то, что другая память повреждена.
Так что мне нужна ваша помощь, чтобы это исправить.
Еще одна вещь, я использую malloc в c для выделения памяти переменной char *.
Спасибо