佚名通过本文主要向大家介绍了bstr,bstr t,bstr是什么类型,bstr转cstring,vt bstr等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 苦恼BSTR
描述:
解决方案1:
描述:
我用VC写了一个OCX,用VC上层调用一切正常,用C++ BUILDER调用开始时总说调用函数的参数错。
在C++上改了后,调用函数可以了,但返回事件总是说参数错,我总不能去改C++的底层吧:(,只有向OCX下手了.
EVENT_CUSTOM("COMMRecv", FireCOMMRecv, VTS_I4 VTS_BSTR VTS_I4 VTS_BSTR VTS_I4 VTS_VARIANT VTS_I4)
事件是这样定义的,怎么把VTS_BSTR作成C++认可的BSTR呢?
我试着在OCX中直接用BSTR类型,编译错误说不能把unsigned short* 转成const char*.
我试着用UNICODE的方式,但连strlen都出问题了。
各位大侠,给点意思吧。我只有90分可以给了,全给你们了。
解决方案1:
呵呵, BSTR是一种类VB的字符串, 有长度前缀的. 肯定不能用strlen之类的crt函数. 可以用_bstr_t或ATL的类CComBSTR类.
解决方案2:用_bstr_t 吧代替BSTR吧。
解决方案3: 在wind32下BSTR是一个宽字符,所以你不能用strlen进行测试取得字符串长度,
如果想得到宽字符长度,请用SysStringLen(bstr)