У меня есть C # DLL, имеющая нижеуказанную функцию:
[DllExport(ExportName = "getOutputString", CallingConvention = CallingConvention.StdCall)]
public static String getOutputString()
{
String managedString = "123456789012345678901234567890";
return managedString;
}
и приложение C ++ для использования вышеуказанной функции как:
HMODULE mod = LoadLibraryA("MyCustomDLL.dll");
using GetOutputString = std::string (__stdcall *) ();
GetOutputString getOutputString = reinterpret_cast<GetOutputString>(GetProcAddress(mod, "getOutputString"));
и хочу сохранить строку из DLLв переменной C ++ как:
std::string myVariable = getOutputString();
Когда я запускаю приложение C ++, оно вылетает.
Но когда я просто использую функцию в коде std :: printf, она прекрасно работает:
std::printf("String from DLL: %s\n", getOutputString());
Моя настоящая задача - получить массив DLL из DLL, но если вы можете помочь мне получить простую строку из C # в std :: string в C ++, это было бы здорово.
Илипросто дайте мне подсказку, чтобы сохранить напечатанную строку через std :: printf () в переменной типа std :: string.