我是COM编程的新手,我们的项目需要Python脚本与用C#编写的COM dll进行通信。
Python中生成的COM签名如下所示
COMMETHOD([dispid(1610743820)], HRESULT, 'test',
( ['in', 'out'], POINTER(_midlSAFEARRAY(c_double)), 'test' ),
( ['retval', 'out'], POINTER(VARIANT_BOOL), 'pRetVal' )),
其中C#代码在哪里
public bool test(ref double[,] test)
{
if (test == null)
test = new double[1,2];
test[0,0] = 0.0;
test[0,1] = 0.5;
return true;
}
注意:以上是我为解释问题而创建的虚拟函数
现在当我尝试从Python调用COM方法时,我只将通过引用方法传递的值(sweepValuesX)作为返回值而不是实际返回值(必须为true / false)< / p>
我的函数调用如下
print apxWrapper.test()
,输出为((0.0,0.5),)
注意:由于我无法找到从Python传递最后一个争论的方法,我只是省略了最后一个用于试用的论点
任何有关为什么会发生这种情况的提示都受到高度赞赏或具体我有两个问题
桑杰