В C ++ у меня есть код, требующий передачи const char *
в:
void Load(const char *filename)
Если я попытаюсь использовать String
, как MSDN, кажется, предлагает:
[DllImport("foo.dll")]
protected static extern void Load(String filename);
В итоге я получаю исключение, в котором говорится, что вызов имеет несбалансированный стек из-за несоответствия между управляемым вызовом P / Invoke и действительной сигнатурой функции C ++.
Какую сигнатуру функции C # мне нужно использовать? Я пытался найти ответ, но ничего не придумаю.
Решение: Оказывается, причина, по которой я получаю ошибку "несбалансированного стека", заключалась в том, что выполняемый мной тестовый код вызывал файл, которого на самом деле не было в каталоге. С CallingConvention=cdecl
и файлом в соответствующем месте проблема была решена.