当我ctypes
从 HTML/JS->python in pyramid f/w -->C++ 向函数传递变量参数时遇到问题
例如,我的 HTTP GET 调用如下:
类型:“GET”,异步:false,url:“/web/NewModel/getValues?count=2¶meters=Param1,Param2”,成功:function(data){ alert(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
问题似乎是当我*args
在 2 个 Python 函数之间传递时,它得到的值很好(当我在 getMultipleValues 函数中打印值时它打印得很好)。但是funcHandle
,我使用的调用,C++ 没有得到任何*args
正在传递的值。
如果我用 运行测试程序funcHandle(count, "Find" , "parameter1" , "parameter2")
,它会得到很好的值。
请告诉我我在这里做错了什么。我的要求是传递具有可变数量参数的函数,如前一行所述,以便 C++ 函数可以访问和处理它需要的任何内容。