Я много googled & ничего не работает в моем случае. Вот мой код.Передача строки из C++ в C# не работает
.cpp
char* pp = "this_is_text";
DLL_EXPORT void ToString_Internal(MicroObject* a_microObj, char* a_str)
{
*a_str = *pp;
}
#define DLL_EXPORT __declspec(dllexport)
C# (импорт)
[DllImport("Serializer", CharSet = CharSet.Ansi)]
private extern static void ToString_Internal(IntPtr a_ptr, StringBuilder a_builder);
C# (использование)
StringBuilder l_builder = new StringBuilder(1000); //set 1000 len, for testing
ToString_Internal (m_ptr, l_builder); //invoke to DLL function
Console.WriteLine (l_builder.ToString()); //print to console
Questi на # 1: Console.WriteLine() печатает только первую букву («t») в терминале. Что это за проблема?
Вопрос №2: Я выделяю память в C# (используя StringBuilder). Является ли C# GC deallocating memory в моем случае или мне нужно освободить память вручную и с какой стороны (C или C#).
Если вам нужна дополнительная информация, сообщите мне.
'* a_str = * рр;' - вы понимаете, что копии точно * один символ *, верно? – WhozCraig
@DavidHeffernan Ах сладкий. Спасибо – MickyD