描述:
我用VC+ALT写了一个简单的COM+,其中有一个方法是
STDMETHODIMP CProcess::Test(BSTR inStr, LONG* Result)
{
// TODO: 在此添加实现代码
*Result = wcslen(inStr);
return S_OK;
}
只是计算传入的字符串的长度
可是我在用调用程序中却无法将inStr传进去,得到的返回值总是0
{
BSTR fp1=L"48EF";
long len = CProcess1->Test(fp1);
ShowMessage(StrToInt(len));
}
第一次写COM+,请大家指教!
解决方案1:
有[out,retval]参数的函数在vb中只需要用一个参数,返回值就是这个参数,而vc中要写两个参数,就相当于没有写retval一样的
如果不相拥SysAllocString分配和回收,可以用_bstr_t封装类
_bstr_t bstr(L"48EF");
_bstr_t bstr("48EF");
都可以
BSTR必须要调用SysAllocString分配空间
BSTR fp1=L"48EF";//错误
BSTR fp1=SysAllocString(L"48EF");//正确
....
SysFreeString(fp1);//用完回收
很明显入口参数不对嘛!
BSTR也可以又CString 得到啊
CString s;
BSTR b=s.SysAllocString();