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' })
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д