使用ctypes函数调用C ++函数从python传递变量参数

时间:2012-08-09 08:55:12

标签: c++ python linux python-2.7 ctypes

当我将变量参数从HTML / JS-> python传递给金字塔f / w中的ctypes函数时,我遇到了问题 - > C ++

例如,我的HTTP GET调用如下:

  

输入:“GET”,async:false,           url:“/ web / NewModel / getValues?count = 2& parameters = Param1,Param2”,           成功:函数(数据){               警报(data.GetValue)

Python基本代码:

def get_Multiple_Xpaths(request):
    count = int(request.params['count'])
    requests=[]
    requests = request.params['parameters'].split(',')
    print 'count:%s' % (count)
    data=wrapperClass.getMultipleValues(count , *requests)
    print 'Final Data:%s' % (data)
    return {'Get':data}

Python和C ++之间的I / F Python:

from ctypes import *
so = cdll.LoadLibrary(***)
funcHandle = so.CallC++Function
funcHandle.restype = c_char_p
def getMultipleValues(cls, count, *args):
        print 'count:%s' % (count)
        print 'Length of tuple:%s' %str(len(args))
        for a in args:
            print 'Wrapper Param:%s' % (a)
        value=funcHandle(count, "Find" , *args) -->C++ debug prints parameters as empty. I tried to use str(*args) but it works only if `*args` actually has 1 argument. For multiple, it throws a type error.

        print 'Wrapper Value:%s' % (value)  ---->Returns Empty
        return value

问题似乎是当我在两个Python函数之间传递*args时,它获得的值很好(当我在getMultipleValues函数中打印值时,它打印正常)。但是,我使用的funcHandle调用,C ++不会获得正在传递的*args的任何值。

如果我使用funcHandle(count, "Find" , "parameter1" , "parameter2")运行测试程序,则会获得正确的值。

请告诉我这里我做错了什么。我的要求是传递具有可变数量参数的函数,如前一行中所述,以便C ++函数可以访问和处理它需要的任何内容。

0 个答案:

没有答案