¿Cómo devolver una cadena de una DLL de C ++ a un ecosistema de ejecución de código MetaTrader 4?
Tengo siguiente función
__declspec(dllexport) wchar_t* __stdcall __getJson(wchar_t * listN){
setlocale(LC_ALL, "");
//function logic
wstring ant = utf8_to_wstring(result);
const WCHAR* constRes = ant.c_str();
WCHAR* tempObj=new WCHAR[ant.length()];
wcscpy(tempObj, constRes);
thread Thread([tempObj]{
Sleep(1000);
delete[] tempObj;
});
Thread.detach();
return tempObj;
}
Esta DLL devuelvewchar_t*
a MetaTrader4.
Intenté muchas formas de devolver el valor correcto y evitar pérdidas de memoria, como establecer el tipo de retornoconst wchar_t*
, creando mi propia clase con destructor condelete[]
en. Pero todos estos intentos no tuvieron éxito: obtuve'??ello'
en lugar de'hello'
. Solo los primeros uno o dos símbolos eran incorrectos. Con la creaciónthread
Funciona bien. Pero, quiero saber, ¿puede haber una mejor solución?