Ctypes非常适合python调用c dll。为了从c获得计算结果,通常我将一条json文件路径从python传递给c并将结果保存在c程序中的这个json文件中。但我认为在python端重复传递文件路径并打开文件,写入数据,在c侧关闭文件并打开文件,读取数据,再次在python端关闭文件是微不足道的。我想直接在python和c之间交换json-string。但我不知道如何管理数据指针(char *)。是应该从python传递到c还是由c生成并由c删除?是否可以方便地在python和c之间交换数据?
答案 0 :(得分:2)
传递字符串作为输入的示例。只需传递一个字节字符串。该函数不得写入字符串。
plugin.tx_news.settings.detail.media.image.lightbox.enabled
作为输出,创建一个可写的字符串缓冲区:
// int func(const char* s)
import ctypes
dll = ctypes.CDLL('some_dll')
func = dll.func
func.argtypes = [ctypes.c_char_p]
func.restype = ctypes.c_int
result = func(b'some json data')