C# Python-COMMETHOD,未获得返回值
我对COM编程非常陌生,我们的项目需要Python脚本与用C#编写的COM dll进行通信 在Python中生成的COM签名如下所示C# Python-COMMETHOD,未获得返回值,c#,python,com,safearray,C#,Python,Com,Safearray,我对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
COMMETHOD([dispid(1610743820)], HRESULT, 'test',
( ['in', 'out'], POINTER(_midlSAFEARRAY(c_double)), 'test' ),
( ['retval', 'out'], POINTER(VARIANT_BOOL), 'pRetVal' )),
print apxWrapper.test()
其中,相同的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)
我的函数调用如下
COMMETHOD([dispid(1610743820)], HRESULT, 'test',
( ['in', 'out'], POINTER(_midlSAFEARRAY(c_double)), 'test' ),
( ['retval', 'out'], POINTER(VARIANT_BOOL), 'pRetVal' )),
print apxWrapper.test()
输出为((0.0,0.5),)
注意:由于我无法找到从Python传递最后一个参数的方法,因此出于试用目的,我省略了最后一个参数
任何关于为什么会发生这种情况的暗示都是非常值得赞赏的,或者说得更具体一些,我有两个问题
Sanjay“使用C#编写的COM dll”-真的吗?好的…dll在COM上公开