COM的DLL里有这么个方法
STDMETHODIMP XXXXX::Decode(long lDispHex, BSTR srcString, BSTR *retVal)
{
unsigned char* pDestBuf = NULL;
...*retVal = _bstr_t((char*)pDestBuf).copy();
...}这句*retVal = _bstr_t((char*)pDestBuf).copy();执行后
有时候,返回的字符串会丢失一部分,如:原本pDestBuf的值是“ABC“
执行上面语句后回变成“AB”
pDestBuf中的内容是UTF-8的字符串
请问,谁知道这么回事
这种情况下,有什么其他的返回值设置方法
谢谢先
STDMETHODIMP XXXXX::Decode(long lDispHex, BSTR srcString, BSTR *retVal)
{
unsigned char* pDestBuf = NULL;
...*retVal = _bstr_t((char*)pDestBuf).copy();
...}这句*retVal = _bstr_t((char*)pDestBuf).copy();执行后
有时候,返回的字符串会丢失一部分,如:原本pDestBuf的值是“ABC“
执行上面语句后回变成“AB”
pDestBuf中的内容是UTF-8的字符串
请问,谁知道这么回事
这种情况下,有什么其他的返回值设置方法
谢谢先
解决方案 »
- 请教关于CList的几个问题
- 关于回调函数和被调用函数
- 请问:DX COM 对象的接口说明文档在哪里找?
- 关于多文档窗口的问题?
- 手头有一个实现QQ抽屉效果的类,怎样把他转化成控件(OCX)?
- 我该怎么办,救救我呀.(来着有分,,不能见死不救呀)
- 请问COM,COM+到底如何的关系?像我这样未曾接触过这东西的人到底学什么呢?
- 为何我用VC生成的DLL在VB中不能使用?
- 我用ADO进行数据库编程,该程序一执行,出现内存泄漏,而且CPU使用接近百分之百,求助!
- 16位的非抢占式多任务Windows,任务之间是怎么切换运行的?
- tcp的send()是否可以发比缓冲区大的信息?
- 天啊,“Process"居然不是性能对象,MS的示例代码有问题么???高分求助(vcleaner哥,谢谢刚才的回复)
CAtlString ls_atlstr;
unsigned char* pDestBuf = NULL;
ls_str.format("%s",pDestBuf);
ls_atlstr=ls_str;
BSTR bstr = ls_atlstr.AllocSysString();
沒有調試過你自已試試也可能是
CAtlString ls_atlstr;
ls_atlstr.format("%s",pDestBuf);
BSTR bstr = ls_atlstr.AllocSysString();
不需要copy就行了,因为这种付值本身就有了一个copy
*retVal = _bstr_t((char*)pDestBuf);
中,你传入的最后一个参数的内存不够,比如你分配了15字节,但是你在里边copy时,copy了20字节。
出来时,你看到了什么? 呵呵,只有15字节
执行上面语句后回变成“AB”-----------------------------------------
是谁变成了"AB"