python加载C的动态库.so

2023-01-11  本文已影响0人  靖哥哥编程

直接拷贝可以用,普通调用
python脚本

      from ctypes import cdll
      print("==================\n")
      lib = cdll.LoadLibrary('./libtest.so')

      a = lib.add(11, 2)

      str = lib.test()
      print(str) 

     print("add: ",a)
     print("==================\n")

生成libtest.so

    gcc -fPIC -shared test.c -o libtest.so

C代码:

 #include "test.h"
 int test(){
   printf("hello so====\n");
   return 0;
 }

 int add(int a, int b){
    return a+b;
 }

.h文件

#include "stdio.h"

int test();
int add(int, int);

以上代码可以直接使用,

还可以通过FFI加载.so库,python脚本编写方法

 from cffi import FFI
 ffi = FFI()

 lib_IOTCAPIs = ffi.dlopen("./libtest.so")
 ffi.cdef("int test();")
 lib_IOTCAPIs.test()  # 调用print


 ffi.cdef("int add(int a, int b);")
 kkk = lib_IOTCAPIs.add(1,3)  # 调用
 print("add: ", kkk)
上一篇 下一篇

猜你喜欢

热点阅读