1

HTML/JS から変数引数を関数に渡すときに問題が発生しctypesます->ピラミッド f/w の python -->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私が使用する Call では、C++ は*args渡される値を取得しません。

でテストプログラムを実行するとfuncHandle(count, "Find" , "parameter1" , "parameter2")、値が正常に取得されます。

ここで私が間違っていることについてアドバイスしてください。私の要件は、前の行で述べたように、C++ 関数が必要なものにアクセスして処理できるように、可変数の引数で関数を渡すことです。

4

0 に答える 0