C# 调用 vc++写的com组件: 环境 vs2008.
目的, 转换 BSTR 为 std:string
以下用例毫无意外的在C#调用时都会抛出异常:“尝试读取或写入受保护的内存”
而在纯vc++环境中全部可以正常运行。用例1:STDMETHODIMP CGaAnn::InitSettings(BSTR appPath, BSTR fileName)
{
BSTR bstrText = _bstr_t("This is a test"); return S_OK;
}用例2:
STDMETHODIMP CGaAnn::InitSettings(BSTR appPath, BSTR fileName)
{
string str = (const char*)_bstr_t(appPath); return S_OK;
}用例3:
STDMETHODIMP CGaAnn::InitSettings(BSTR appPath, BSTR fileName)
{
_com_util::ConvertBSTRToString(appPath); return S_OK;
}
目的, 转换 BSTR 为 std:string
以下用例毫无意外的在C#调用时都会抛出异常:“尝试读取或写入受保护的内存”
而在纯vc++环境中全部可以正常运行。用例1:STDMETHODIMP CGaAnn::InitSettings(BSTR appPath, BSTR fileName)
{
BSTR bstrText = _bstr_t("This is a test"); return S_OK;
}用例2:
STDMETHODIMP CGaAnn::InitSettings(BSTR appPath, BSTR fileName)
{
string str = (const char*)_bstr_t(appPath); return S_OK;
}用例3:
STDMETHODIMP CGaAnn::InitSettings(BSTR appPath, BSTR fileName)
{
_com_util::ConvertBSTRToString(appPath); return S_OK;
}
解决方案 »
- 如何在windows CE 的程序中使用多字符集
- 请使用过BCGControlBar的朋友帮忙:outlookbar的自动隐藏功能为什么总出现ASSERT_VALID()错误,认真研究了两天,觉得BCGControlBar是不是有BUG
- CString的Find()总返回-1,有代码。帮忙看一下。
- 请求解答~~!!!!
- ~关于数据库中的时间问题~~~
- 关于TAB的问题!请高手指点!
- 问两个问题,被嫌分少啊,因为我已经没有可用分了555
- 谁能告我一下this指针的用法?
- 我在将一个C文件改为C++时碰到下列错误,怎么解决?
- vc中使用字体方面的的问题*100分*(new!)
- 关于查找接口的问题(附代码)
- VC里用GetText函数取excel的单元格内容,取出来的是“########”,为啥?
连std:的 ifstream fin(pinipath); 在com里用了都会报错 “尝试读取或写入受保护的内存” 啊。
但是我在cmd窗口中运行程序,什么都正常, C#调用程序是winfrom的, 我在cmd窗口中引导打开,什么问题都没有,如果用鼠标双击打开,就不行,救命啊,我快疯了~~
你把复现问题的代码发给我,[email protected]我帮你看一下