вторник, 22 февраля 2011 г.

Передача строки из C++ в C#

На память (особенно если трюки с char* не принесли должного результата):

С++ dll :

extern "C" __declspec(dllexport) void __stdcall getLongString(char str[], int str_length)
{
   strncpy(str,"long long string",str_length);
   result[str_length-1]='\0';
}

C# app :
[DllImport(“c++_dll_name”, CharSet = CharSet.None)]
public static extern void getLongString(StringBuilder str, int str_length);

public static string get_long_string()
{
   StringBuilder sb = new StringBuilder(260);
   getLongString(sb,sb.Capacity);
   return sb.ToString();
}

Гуд лак!