使用python编写脚本的时候,需要使用c语言调用第三方.so动态库,再将.c生成动态库.so,python调用此动态库.so完成操作。
这里用来做一个小的示例。
1. test1.c
#include
int test1()
{
printf("test1\n");
return 0;
}
生成动态库:
gcc -c -fPIC -o test1.o test1.c
gcc -shared -o test1.so test1.o
模拟第三方库test1.so
2.test2.c
#include
int test2()
{
printf("test2\n");
test1();
return 0;
}
gcc -c -fPIC -o test2.o test2.c
gcc -shared -o test2.so test2.o
模拟调用者test2.so
3.pytest.py
#!/usr/bin/python
import ctypes
from ctypes import *
CDLL("./test1.so",mode=ctypes.RTLD_GLOBAL)
libc = cdll.LoadLibrary("./test2.so")
libc.test2()
python实现test2()调用第三方库中的函数test1()
打印结果:
test2
test1
注意:当编译需要包含第三方库的头文件时,在test2.c的代码中要写明.h的包含,并在编译test2的时候寻此路径能找到相应头文件,编译好.so后,直接使用.so即可,不必在运行时带.h头文件包