Я пытаюсь сделать абсолютный простейший минимальный пример того, как передавать строки в и из С++ DLL на С#.
Мой С++ выглядит так:
using std::string;
extern "C" {
string concat(string a, string b){
return a + b;
}
}
С заголовком, например
using std::string;
extern "C" {
// Returns a + b
__declspec(dllexport) string concat(string a, string b);
}
Мой С# -
[DllImport("*****.dll", CallingConvention = CallingConvention.Cdecl)]
static extern string concat(string a, string b);
}
И я звоню: Console.WriteLine(concat ( "a", "b" ));
Но это дает исключение System.AccessViolationException. Кажется, это самая сложная вещь, но я полностью застрял на ней. Когда я попытался сделать подобный эксперимент с функцией "Добавить", которая взяла два удвоения и вернула двойной, у меня не было проблем.