python中调用c库
python中調用c庫??
2013-04-23 15:34:52|??分類: python核心編程 |??標簽:python??makefile?? |舉報 |字號?訂閱
參考地址:http://my.oschina.net/ibmdw/blog/14750
http://blog.csdn.net/sraing/article/details/4384245
1、源文件
getstring.c? getstring.h??? reverse.c? reverse.h
getstring.c
#include<stdio.h> char *getstring(char *str,int num) { ??? printf("%s\n",str); ??? return str; }
getstring.hchar *getstring(char *str,int num);
reverse.c#include<stdio.h> #include"getstring.h" char *reverse(char *str,int num) { ??? getstring(str,num); ??? int half = num / 2; ??? int i; ??? char temp; ??? for(i =0;i < half;++ i) ??? { ??? ??? temp = str[num - 1 - i]; ??? ??? str[num - 1 - i] = str[i]; ??? ??? str[i] = temp; ??? } ??? printf("%s\n",str); ??? return str; }
reverse.h#include<stdio.h>char *reverse(char *str,int num);
2、生產靜態庫.o文件1、 cc -c getstring.c
生成getstring.o文件
2、cc -c reverse.c getstring.h
生成reverse.o及getstring.h.gch
3、生成動態庫.so文件
gcc -shared -fPCI -o libreverse.so reverse.o getstring.o
生成文件libreverse.so
4、在python中調用.so文件
>>> import ctypes
>>> so = ctypes.CDLL("./libreverse.so")
>>> fun = so.reverse
>>> fun("himan",5)
himan
namih
-1217157164
5、Makefile
reverse.so:getstring.o reverse.o ?? ?gcc -shared -fPCI -o libreverse.so reverse.o getstring.oreverse.o:reverse.c getstring.h ?? ?cc -c reverse.cgetstring.o:getstring.c ?? ?cc -c getstring.cclean: ?? ?rm -rf *.o *.so *.out *.gch
reverse.so:getstring.o reverse.o ??? @$(CC) -shared -fPCI -o $@ $^.PHONY:clean clean: ??? @$(RM) *.o *.so *.out *.gch
@是阻止命令輸出
$(RM) = rm -f$(CC) = gcc
$@ = reverse.so所有目標
$^ = getstring.o reverse.o 所有依賴項
.PHONY = 偽目標
總結
以上是生活随笔為你收集整理的python中调用c库的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 可能由于版本问题引发出来的django问
- 下一篇: 国家生物信息中心在核酸研究发表单细胞DN
