gpt4 book ai didi

python - 如何将 char 指针从 python 传递给 C++ API?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:40 28 4
gpt4 key购买 nike

我正在尝试从我的 python 代码中调用以下 C++ 方法:

TESS_API TessResultRenderer* TESS_CALL TessTextRendererCreate(const char* outputbase)
{
return new TessTextRenderer(outputbase);
}

我对如何将指针传递给方法有困难:

遵循正确的方法吗?

textRenderer = self.tesseract.TessTextRendererCreate(ctypes.c_char)

或者我应该这样做:

outputbase = ctypes.c_char * 512
textRenderer = self.tesseract.TessTextRendererCreate(ctypes.pointer(outputbase))

上面的操作给我错误:

TypeError: _type_ must have storage info

最佳答案

您应该传入一个字符串。

例如:

self.tesseract.TessTextRendererCreate('/path/to/output/file/without/extension')

这是一个带有模拟 API 的通用示例。在 lib.cc 中:

#include <iostream>

extern "C" {
const char * foo (const char * input) {
std::cout <<
"The function 'foo' was called with the following "
"input argument: '" << input << "'" << std::endl;

return input;
}
}

使用以下方法编译共享库:

clang++ -fPIC -shared lib.cc -o lib.so

然后,在 Python 中:

>>> from ctypes import cdll, c_char_p
>>> lib = cdll.LoadLibrary('./lib.so')
>>> lib.foo.restype = c_char_p
>>> result = lib.foo('Hello world!')
The function 'foo' was called with the following input argument: 'Hello world!'
>>> result
'Hello world!'

关于python - 如何将 char 指针从 python 传递给 C++ API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36864111/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com