我最近才开始使用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 …