小编R. *_*llo的帖子

CPPYY/CTYPES 将字符串数组作为 char* args[] 传递

我最近才开始使用cppyyand ctypes,所以这可能是一个有点愚蠢的问题。我有以下 C++ 函数:

float method(const char* args[]) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

从 Python 我想args作为字符串列表传递,即:

args = *magic*
x = cppyy.gbl.method(args)
Run Code Online (Sandbox Code Playgroud)

我以前发现过这个,所以我使用了

def setParameters(strParamList):
    numParams    = len(strParamList)
    strArrayType = ct.c_char_p * numParams
    strArray     = strArrayType()
    for i, param in enumerate(strParamList):
        strArray[i] = param
    lib.SetParams(numParams, strArray)
Run Code Online (Sandbox Code Playgroud)

来自 Python:

args = setParameters([b'hello', b'world'])
Run Code Online (Sandbox Code Playgroud)

c_types.c_char_p需要一个字节数组。但是,当x = cppyy.gbl.method(args)我打电话时,我得到

TypeError: could not convert argument 1 (could not convert argument to buffer or nullptr)
Run Code Online (Sandbox Code Playgroud)

我不完全确定为什么这会是错误的,因为argsis …

c++ python arrays string ctypes

5
推荐指数
1
解决办法
282
查看次数

标签 统计

arrays ×1

c++ ×1

ctypes ×1

python ×1

string ×1