BSTR引发crash,程序自动关闭。 本帖最后由 hbvanguard 于 2012-06-13 12:50:00 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不能单步调式吗? 怀疑是Name = rs.GetStr()引起的, 搜索一下c# BSTR 可能c#是UNICODE,c++是ansi的,你先拷贝到缓冲区,把char转换成WCHAR之后试试? BSTR是宽字节类型的。就是不知道C#的字符串和C++的字符串是不是这样传递的http://www.programfan.com/club/showpost.asp?id=12049这里有一个例子 BSTR 使用BSTR bstrText = ::SysAllocString(L"Test"); char* lpszText2 = _com_util::ConvertBSTRToString(bstrText); SysFreeString(bstrText); // 用完释放 参考 http://www.cppblog.com/lizao2/articles/169250.html string Name = String.Format("{0}", rs.GetStr());你试试这样可行否。 不了解com 但是GetStr()里的变量看上去都是局部变量 rs.GetStr()返回的对象已经无效了吧 官方例子STDMETHODIMP CAlertMsg::get_ConnectionStr(BSTR *pVal){ // m_bsConStr is _bstr_t *pVal = m_bsConStr.copy();}BSTR GetStr(){ char str[100]; .......//str赋值 _bstr_t b_s; BSTR bstr=NULL; b_s=str; bstr=b_s.Detach(); return bstr;} 共享扫雷小程序 请教一个问题? 编译时的错误!调了一下午也不知道咋回事? 从Recordset对象取数据的问题。 显示器的分辨率不同,对话框的大小也不同,如何解决? 请教设备退出程序问题(USB)!!! 求教类继承问题,解决者立即给分 控件初始化显示位置怎么控制? 如何在一个应用程序中得到其他文件内容改变的消息 DCOM设置问题? 矩阵综合运算 搞了一天还没弄明白 明天要交 紧急求助! MFC得到控制台的输出结果并保存至字符串中
你先拷贝到缓冲区,把char转换成WCHAR之后试试?
就是不知道C#的字符串和C++的字符串是不是这样传递的http://www.programfan.com/club/showpost.asp?id=12049
这里有一个例子
BSTR bstrText = ::SysAllocString(L"Test");
char* lpszText2 = _com_util::ConvertBSTRToString(bstrText);
SysFreeString(bstrText); // 用完释放 参考 http://www.cppblog.com/lizao2/articles/169250.html
STDMETHODIMP CAlertMsg::get_ConnectionStr(BSTR *pVal){ // m_bsConStr is _bstr_t
*pVal = m_bsConStr.copy();
}
BSTR GetStr()
{
char str[100];
.......//str赋值
_bstr_t b_s;
BSTR bstr=NULL;
b_s=str;
bstr=b_s.Detach();
return bstr;
}