求救,COM JS CComSafeArray有关问题,小弟我已经按论坛中的方法试验了但最终还是得到一个object error

求救,COM JS CComSafeArray问题,我已经按论坛中的方法试验了但最终还是得到一个object error
我自己用VC2008的ATL工程做了个COM,里面有个接口是想把数据传递给JS.

具体C++中我这么搞的

STDMETHODIMP CDetectDataObj::test(VARIANT* out)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());

//CComSafeArray<VARIANT> m_sa; 在.H中
VariantInit(out);
m_sa.Add(CComVariant(_T("aaa")));
m_sa.Add(CComVariant(_T("bbb")));
m_sa.Add(CComVariant(_T("ccc")));
CComVariant var(m_sa);
var.Detach(out);
return S_OK;
}

JS中

var obj=new ActiveXObject("DetectData.DetectDataObj.1");
var out;
obj.test(out); //写成out = obj.test() 会直接报错
var jsa = new VBArray(out).toArray(); //这句话没办法成功



------解决方案--------------------
以返回值方式试试,返回VARIANT类型数据,然后
var out = obj.test();
------解决方案--------------------
JS 不支持除返回值之外的任何输出类型参数,需要改造接口方法的参数类型
------解决方案--------------------
在idl中为test的参数加上[out, retval]前缀
------解决方案--------------------
如果还不行,可以把代码发给我,我帮你调试一下
gw_net@163.com