如何把c++的定义的com对象数组做为参数传递。谢谢
情况这样的,vc开发com,C#调用。
以前解决了传递一个单com对象参数,如下:
STDMETHODIMP CNowtest::GetDataOne2(VARIANT* outDataOne)
{
// TODO: Add your implementation code here
CComObject<COneData > * oneData;
HRESULT hr=CComObject<COneData >::CreateInstance(&oneData);
CComVariant var((IDispatch *)oneData);
var.Detach(outDataOne);
return S_OK;
}
C# 调用:
TestCom4Lib.IOneData iOneDate = (TestCom4Lib.IOneData)obj;
没有问题。
但现在我想返回一个OneData对象的数组, 但没有找到方法。
STDMETHODIMP CNowtest::GetOneDataes(LONG* ArraySizeCount, VARIANT** outOneDatas)
{
// TODO: Add your implementation code here
CComObject<COneData > * oneData1;
HRESULT hr=CComObject<COneData >::CreateInstance(&oneData1);
CComObject<COneData > * oneData2;
hr=CComObject<COneData >::CreateInstance(&oneData2);
CComVariant var1((IDispatch *)oneData1);
var1.Detach(outOneDatas[0]);
CComVariant var2((IDispatch *)oneData2);
var1.Detach(outOneDatas[1]);
return S_OK;
}
感觉C#调用用二级指针根本不行,直接报读取保护错误。 而且二级指针导出的参数也怪怪的,无法识别。
请大大点解。