Пожалуйста, помогите,Вызвать метод C++, который возвращает строку из C#
my c++ function:
extern "C" REGISTRATION_API void calculate(char* msg)
{
//some calculation here
msg = "some text";
}
мой C# вызов:
[DllImport("thecpp.dll")]
static extern void calculate(StringBuilder sMsg);
private void button4_Click(object sender, EventArgs e)
{
StringBuilder msg = new StringBuilder();
calculate(msg);
MessageBox.Show(msg.ToString());
}
Независимо от того, что я положил в сообщ, то StringBuilder всегда пусто? Зачем? что не так? есть идеи? пожалуйста, поделитесь
Ваша функция C++ - это утечка памяти. – SLaks
В коде C вы присваиваете значение самому указателю 'msg', а не указанию на указанную память. Я не знаю, как исправить это w.r.t. marshalling, но я просто бросаю его сюда, потому что два ответа, похоже, уже пропустили его. – Thomas
@SLaks: Это не утечка памяти, но я признаю, что страшно назначать строковый литерал указателю на не-const 'char'. – Thomas