同样的代码在 vs2008 的dll中,用 string 可以传递。换到 vs2015 中就异常,原因可能涉及到 STL 不同模块下内存释冲突问题,很是头大。用char* 的话内存申请和释放又很麻烦。
改为使用 char 数组形式可以替代。如下
...
if (NULL != g_hWndCIO)
{
char buf[512] = {0};
sprintf_s(buf, "%s", cbEvent->getResult());
//string str = buf;
::SendMessage(g_hWndCIO, g_nMsgId, (WPARAM)buf, tmpParam->nType);
}
另外接受模块的接受函数大致如下:
LRESULT CMainODlg::onRlt(WPARAM wParam, LPARAM lParam)
{
char *pBuf = (char *)wParam;
string str = pBuf;
OutputDebugStringA(str );
return 0L;
}