Python 调用 so

先来一个网上随便都能找得到的例子吧:先来一个test.c

#include "test.h"

void test(){
  printf("hello so\n");
}

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

在来一个test.h:

#include "stdio.h"

void test();
float add(float, float);

然后将其编译成.so文件:

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

最后在python文件里面调用:

#!/usr/bin/env python                                                                                                                   

print "start call  so file\n"

from ctypes import *

test = cdll.LoadLibrary("./libtest.so")

test.test()
add =test.add
add.argtypes =[c_float, c_float] 
add.restype =c_float
print add(1.3, 13.4)

然后在终端运行:

root@localhost:~/python/call_so# python test.py
start call so file
hello so
14.6999998093

嗯,python2的这个数字精度的bug也是醉了

当然了,ctypes不是这样简单的模块,否则也不会放到标准库里面去

(未完待续。。。)

你可能感兴趣的:(Python 调用 so)