Python -COMMETHOD,没有获得返回值

时间:2013-09-12 11:03:02

标签: 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' )),

其中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传递最后一个争论的方法,我只是省略了最后一个用于试用的论点

任何有关为什么会发生这种情况的提示都受到高度赞赏或具体我有两个问题

  1. 如何通过Python传递参数传递参数(POINTER(_midlSAFEARRAY(c_double)))
  2. 我如何获得实际的回报值(真/假)
  3. 桑杰

0 个答案:

没有答案