- 主题:求助:python调用某个C语言函数库的方法,谢谢
目前有个c语言函数库,需要在python中调用该函数库中的相关函数接口。经过查询发现有ctypes、cffi以及cython三种方法。
但是经过实际学习了解之后发现,因为该c语言函数库中自定义的数据类型很多,而且有些自定义的struct中的某些字段还是自定义的数据类型,如此嵌套多次,而且其中包括了回调函数等。
因此导致发现封装的时候很复杂。
有没有相对比较简单的封装方法?敬请指导,非常感谢。
--
FROM 117.129.58.*
1在这三个模块中选一个,自己继续研究
2花钱找会用这些模块的人来干
【 在 diyiwuji 的大作中提到: 】
: 目前有个c语言函数库,需要在python中调用该函数库中的相关函数接口。经过查询发现有ctypes、cffi以及cython三种方法。
: 但是经过实际学习了解之后发现,因为该c语言函数库中自定义的数据类型很多,而且有些自定义的struct中的某些字段还是自定义的数据类型,如此嵌套多次,而且其中包括了回调函数等。
: 因此导致发现封装的时候很复杂。
: ...................
--
FROM 223.101.206.*
把代码扔给gpt,问问他?
--
FROM 120.244.235.*
少封装几个接口
【 在 diyiwuji 的大作中提到: 】
: 目前有个c语言函数库,需要在python中调用该函数库中的相关函数接口。经过查询发现有ctypes、cffi以及cython三种方法。
: 但是经过实际学习了解之后发现,因为该c语言函数库中自定义的数据类型很多,而且有些自定义的struct中的某些字段还是自定义的数据类型,如此嵌套多次,而且其中包括了回调函数等。
: 因此导致发现封装的时候很复杂。
: ...................
--
FROM 114.249.22.*
cffi API模式吧
--
FROM 117.136.72.*
非常感谢楼上各位的指点。
cffi API模式好像也是需要涉及到类型转换的吧。
而且我原本以为cffi api模式可以直接引入c语言的头文件就可以了。但是发现cffi无法实现对于#include #define等预处理语句处理,会报错。而c语言头文件中有一堆这样的内容。
--
FROM 117.129.58.*
把c的函数包一层编译成dll,然后python开进程执行。
--
修改:cmkylin FROM 124.64.18.*
FROM 124.64.18.*
【 在 diyiwuji 的大作中提到: 】
: 目前有个c语言函数库,需要在python中调用该函数库中的相关函数接口。经过查询发现有ctypes、cffi以及cython三种方法。
: 但是经过实际学习了解之后发现,因为该c语言函数库中自定义的数据类型很多,而且有些自定义的struct中的某些字段还是自定义的数据类型,如此嵌套多次,而且其中包括了回调函数等。
: 因此导致发现封装的时候很复杂。
: ...................
呵呵, 外包给我, 1000给你搞定
这是最简单的方法, 只要提需求就够了。
想使用简单, 封装还简单, 如果还要考虑运行速度, 跨平台, 也是一堆细节要考虑的。
python和C之间的引用计数搞不对, 就要内存泄漏, 内存抛异常。
如果, 需要多线程运行, 就更多问题了。
python简单, 简单的原因是把很多复杂的事情埋到底层了。
--
FROM 124.126.2.*
外包给我,我干过,便宜50元
【 在 diyiwuji 的大作中提到: 】
: 目前有个c语言函数库,需要在python中调用该函数库中的相关函数接口。经过查询发现有ctypes、cffi以及cython三种方法。
: 但是经过实际学习了解之后发现,因为该c语言函数库中自定义的数据类型很多,而且有些自定义的struct中的某些字段还是自定义的数据类型,如此嵌套多次,而且其中包括了回调函数等。
: 因此导致发现封装的时候很复杂。
: 有没有相对比较简单的封装方法?敬请指导,非常感谢。
发自「快看水母 于 iPhone 13」
--
FROM 223.160.129.*
哈哈哈
【 在 wint 的大作中提到: 】
: 外包给我,我干过,便宜50元
:
: 发自「快看水母 于 iPhone 13」
: --
发自「今日水木 on 23116PN5BC」
--
FROM 111.198.53.*