如何将字符串从C ++ DLL返回到MetaTrader 4代码执行生态系统?

编程入门 行业动态 更新时间:2024-10-23 14:19:53
本文介绍了如何将字符串从C ++ DLL返回到MetaTrader 4代码执行生态系统?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我具有以下功能

__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; }

此DLL返回 wchar_t *

This DLL returns wchar_t* to MetaTrader4.

我尝试了很多方法来返回正确的值并避免内存泄漏,例如设置返回类型 const wchar_t * ,使用 delete [] 的析构函数创建我自己的类。但是所有这些尝试均未成功:我得到了'?? ello'而不是'hello'。仅前一个或两个符号不正确。创建 thread 可以正常工作。但是,我想知道,是否有更好的解决方案?

I tried many ways to return correct value and avoid memory leaks such as set return type const wchar_t*, creating my own class with destructor with delete[] in. But all this attempts was unsuccessful: I got '??ello' instead of 'hello'. Just first one or two symbols were incorrect. With creating thread it works right. But, I want to know, may there be better solution?

推荐答案

偶然的是,我将注意力放在 BOOL APIENTRY DllMain 。因此,它无需创建线程即可解决我的问题。

Accidentaly, I put my mind to BOOL APIENTRY DllMain. So it solve my problem without creating threads.

vector<wchar_t*> tempObjVector; BOOL APIENTRY DllMain(HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: while (tempObjVector.size() != 0) { delete[] tempObjVector.back(); tempObjVector.pop_back(); } break; } return TRUE; } __declspec(dllexport) wchar_t* __stdcall __getJson(wchar_t * listN){ .... .... wchar_t* tempObj=new wchar_t[ant.length()+1]; tempObj[ant.length()] = 0; wcscpy(tempObj, constRes); tempObjVector.push_back(tempObj); return tempObj; }

更多推荐

如何将字符串从C ++ DLL返回到MetaTrader 4代码执行生态系统?

本文发布于:2023-11-15 04:19:24,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1591088.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字符串   如何将   生态系统   代码   DLL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!