所在的位置: C++ >> C++前景 >> Python通过FFI调用CC代码

Python通过FFI调用CC代码

动态链接库调用

确定函数声明和ABI(二进制接口),就能够确定参数和返回值的传递方式。

FFI的传递方式是基于函数声明和ABI的固定不变的东西,再加上能够变化的函数地址、数据,就可以调用这个函数。

编辑切换为居中

添加图片注释,不超过字(可选)

编写C语言接口

//ffi_test.cppexternCintadd(inta,intb);intadd(inta,intb){returna+b;}编写Python程序调用动态链接库

#test_ffi.pyfromcffiimportFFIffi=FFI()ffi.cdef(intadd(inta,intb);)lib=ffi.dlopen(libffi_test.so)print(lib.add(3,4))代码编译及执行

g++ffi_test.cpp-fPIC-shared-olibffi_test.sopythontest_ffi.py#output:7Python代码中嵌入C代码

fromcffiimportFFIffi=FFI()ffi.cdef(intadd(inta,intb);)lib=ffi.verify(intadd(inta,intb){returna+b;})print(lib.add(3,4))总结

通过FFI我们可以轻松的在Python中嵌入C/C++语言代码,从而避免在C/C++繁琐的编译工具链耗费大量的时间,减少开发成本。

调用动态链接库,方便我们跨语言复用代码库,不需要在当前语言的基础上再实现一次。

FFI支持CPython、Ruby、Rust、Nodejs、PHP、Java等,支持大部分的系统架构和操作系统,X86、X86-64、PowerPC、ARM、AArch64等。




转载请注明:http://www.aierlanlan.com/cyrz/3628.html