Ошибка PInvoke: попытка записи или чтения в защищенную память - PullRequest
0 голосов
/ 18 мая 2018

Я знаю, что этот вопрос часто задают, но я пытался переключить соглашения о вызовах, и это не сработало. Я использую C ++ DLL в моем C # Winforms кода. Моя функция прекрасно работает до оператора return, где она выдаёт мне эту ошибку. если кто-то может помочь мне понять, почему я буду ценить это много. это конец моей функции c ++:

ans += ";";
ans += rans;
cout << "returning value 2" << endl;
char* retval = new char[ans.size() + 1];
strcpy_s(retval,ans.size()+1, ans.c_str());
return retval;

ans - это std :: string.

вот мой код C # PВоззов и вызов функции:

[DllImport("C:\\Users\\Boaz\\source\\repos\\Macro_Setter_DLL\\Debug\\Macro_Setter_DLL.dll", CallingConvention = CallingConvention.StdCall)]
static extern string Stop_Record();

string tmp = Stop_Record();

Заранее спасибо!

...