我正在尝试使用python绑定在我的c++代码周围连接一个简单的python包装器。我现在想返回一个值映射。当我尝试创建字典条目时,我的应用程序在键>;大小1。即使忽略返回的对象,我仍然得到错误。也只加上“ke”。我已经成功地返回了一个带有{“k”:10}的dict,但仅此而已
C++:
extern "C" void Test() {
signal(SIGSEGV, handler); // install our handler
PyObject* results = PyDict_New();
printf("Adding k\n");
PyDict_SetItemString(results, "k", PyLong_FromLong(3000));
printf("Adding ke\n");
PyDict_SetItemString(results, "ke", PyLong_FromLong(3000));
printf("Adding key\n");
PyDict_SetItemString(results, "key", PyLong_FromLong(3000));
}
Python:
import ctypes
_test_bench = ctypes.CDLL('<path_to_so>')
_test_bench.Test.argtypes = None
_test_bench.Test.restype = None
def test() -> None:
global _test_bench
_test_bench.Test()
test()
输出:
Adding k
Adding ke
Error: signal 11:
不能从加载了
CDLL
的库中使用pythonapi。你需要使用PyDLL
(另外,别忘了做你的refcount管理。这不是坠机的原因,但仍然是个问题。)
相关问题 更多 >
编程相关推荐