php如何从com组件中获取返回的字符串?
com组件中定义一个方法
hresult getstr([in,out] bstr* vstr, [in,out] long* vlen, [out,retval] long* verror);
方法实现为:
c/c++ codestdmethodimp mc_myclass::getstr(bstr* vstr, long* vlen, long* verror){ *verror = 0; if(0 == vstr) return s_false; if(0 == vlen) return s_false; wchar_t tstr[] = lthis is a string from com!; memcpy(*vstr, tstr, wcslen(tstr)); *vlen = wcslen(tstr); *verror = 1; return s_ok;}
php调用该方法
c/c++ code$tstr = ;$tlen = 100;$tstr = str_pad($tstr, $tlen, 0);$tres = $tcom->getstr(&$tstr, &$tlen);
结果
$tres = 1;
$tstr = ;
$tlen = 26;
求解:为什么$tstr为空?
------解决方案--------------------
可能要用 vsscanf 函数取回
由于没有测试条件,无法给出进一步的建议
------解决方案--------------------
memcpy(*vstr, tstr, wcslen(tstr));
wcslen是求unicode字符个数, memcpy是拷贝字节个数, 很明显应该wcslen(tstr)*2,另外也不是*vstr,直接是vstr.
------解决方案--------------------
探讨
memcpy(*vstr, tstr, wcslen(tstr));
wcslen是求unicode字符个数, memcpy是拷贝字节个数, 很明显应该wcslen(tstr)*2,另外也不是*vstr,直接是vstr.
