DllImport из с++ подскажите непонятные моменты - C#
Формулировка задачи:
[DllImport("myLib.dll", CharSet = CharSet.Ansi, EntryPoint = "Print", CallingConvention = CallingConvention.Cdecl)]
private extern static IntPtr Print(string a, string b);
public static string Print2(string a, string b)
{
return Marshal.PtrToStringAnsi(Print(a, b));
}extern "C" __declspec(dllexport) const char* Print(char* a, char* b)
{
int len =(int)malloc((strlen(a)+strlen(b)+1));
char *tmp = new char[len] ;
strcpy_s(tmp, len,a);
strcat_s(tmp, len,b);
cout <<len<<"\n";//что то дохрена как то памяти выделяется при Print2("123aв", "456апв") len = 68 000 000 где я ошибся?
return tmp;
}extern "C" __declspec(dllexport) const char* Print(char* a, char* b)
{
//setlocale(LC_ALL, "rus");
//SetConsoleCP(1251);
//SetConsoleOutputCP(1251);
std::string tmp1(a);
std::string tmp2(b);
return (tmp1 + tmp2).c_str();
}Решение задачи: «DllImport из с++ подскажите непонятные моменты»
textual
Листинг программы
new string(new char[] { '5', '\x0', 'g' })