原新浪博客(http://blog.sina.com.cn/billsona)搬迁至此。
近期项目组需要开发一个MacOS下的动态库供其它产品调用,于是简单摸索了一下dylib动态库的测试方法。业界有不少公司使用的是robotframework框架,通过python加载动态库进行自动化测试。 python提供了一个强大的库ctypes,可以帮助python实现调用C或者C++写的程序。下面通过一个简单的操作来阐述这一块的使用过程。 MacOS上通过文本文件写入下面一段简单的C程序。
#includeint addition_intint, int);
int addition_intint num1, int num2){ return num1 + num2;}
将文本文件保存为add.c
通过MacOS下的命令行终端进入保存add.c文件的目录,执行如下的命令,将add.c编译成dylib动态库。
gcc -shared -o adder.dylib -fPIC add.c
执行结果如下
下生成了一个名为adder.dylib的动态库。
接下来我们尝试通过python下的ctypes库中的方法来加载并使用这个动态库。
将ctyoes库导入python
>> from ctypes import *
通过CDLL函数加载动态库并保存到mycalcu对象
>> mycalcu = CDLL"adder.dylib")
直接通过mycalcu对象使用动态库中的函数addition_int来执行证书加法运算。
>> mycalcu.addition_int12,15)