Python调用C语言开发的共享库方法实例
在helloworld工程中,编写了一个简单的两个数值相加的程序,编译成为共享库后,如何使用python对其进行调用呢?
使用ll命令列出当前目录下的共享库,其中共享库名为libhelloworld.so.0.0.0
ufo@ufo:~/helloworld/.libs$ll 总用量32 drwxr-xr-x2ufoufo4096 1月2914:54./ drwxr-xr-x6ufoufo4096 1月2916:08../ -rw-r--r--1ufoufo3816 1月2914:54helloworld.o -rw-r--r--1ufoufo3956 1月2914:54libhelloworld.a lrwxrwxrwx1ufoufo 19 1月2914:54libhelloworld.la->../libhelloworld.la -rw-r--r--1ufoufo 983 1月2914:54libhelloworld.lai lrwxrwxrwx1ufoufo 22 1月2914:54libhelloworld.so->libhelloworld.so.0.0.0* lrwxrwxrwx1ufoufo 22 1月2914:54libhelloworld.so.0->libhelloworld.so.0.0.0* -rwxr-xr-x1ufoufo9038 1月2914:54libhelloworld.so.0.0.0*
进入python的命令行模式进行C语言实现的两个数值相加的程序的调用;
ufo@ufo:~/helloworld/.libs$python Python2.7.4(default,Sep262013,03:20:56) [GCC4.7.3]onlinux2 Type"help","copyright","credits"or"license"formoreinformation.
载入ctypes类(此类即是调用C语言动态库的方法)
>>>importctypes
打开当前目录的动态库
>>>lib=ctypes.cdll.LoadLibrary("./libhelloworld.so.0.0.0")
调用动态库中的接口
>>>lib.add(5,7) 12
两个参数的相加的函数如下:
ufo@ufo:~/helloworld$cathelloworld.c #include<stdio.h> #include<stdlib.h>
intadd(inta,intb) { intc=a+b; returnc; }