python动态库调用动态库(Ubuntu实现验证)

使用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头文件包

你可能感兴趣的:(python)