Đây là mã C của tôi, tôi đã tạo một thư điện tử dùng chung. Khi tôi tải lib được chia sẻ trong Python và thực thi mã Python bên dưới, tôi gặp sự cố. Tại sao?Tại sao Python gặp sự cố khi trả về chuỗi C?
extern "C" {
PyObject* foo2(char* b)
{
return Py_BuildValue("s", b);
}
}
Và đây là những gì tôi đang làm bằng Python:
from ctypes import *
d = cdll.LoadLibrary('./foo.so')
d.foo2.restype = c_char_p
v = d.foo2('hello world')
print pythonapi.PyString_Size(v)
Nếu nó giúp, tôi đang ở python2.6.
'c_char_p' - không có nghĩa là' char * '? bạn không ** trả về 'char *'… –
Tại sao bạn sử dụng 'ctypes' để mở một thư viện có sử dụng Python API, thay vì làm cho thư viện đó là một mô-đun mở rộng Python? – interjay