求助。 Python 使用 ctypes 库调用 C 语言 so 动态库遇到困难。
时间: 2020-08-21来源:V2EX
前景提要
最近接到一个需求,要用 python 封装一个 c 语言的 so 。好久没动过 C 语言了。
目前 c 程序调用调通了,代码如下: #include <stdio.h> #include "fm_def.h" #include "fm_cpc_pub.h" static unsigned char dev_index = 0; static unsigned int dev_type = 0xE600; static unsigned int dev_flag = 0x00000002; static void * dev; int main() { unsigned int code = FM_CPC_OpenDevice(&dev_index,dev_type,dev_flag,&dev); printf("%d\n",code); }
python 封装这边,用了 ctypes 库调用 so,代码如下: #!/usr/bin/env python3 from ctypes import * cur = cdll.LoadLibrary('./libfmapiv100.so') dev_index = c_ubyte(0) dev_type = c_uint(0xE600) dev_flag = c_uint(0x00000002) dev = c_void_p() code = cur.FM_CPC_GetDeviceInfo(byref(dev_index), 7, 1, byref(dev)) print(code)
这段代码报错 Segmentation fault,查了下大概率是参数格式问题。 如果参数列表写成 code = cur.FM_CPC_GetDeviceInfo(dev_index, 7, 1, byref(dev))
会返回 errorcode ( so 的错误代码),个人感觉是我第一个参数格式写的有问题。
求救啊!或者有什么别的方案也指导下!多谢!!

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行