自动化
- 为了调用一个简单的 c 程序,需要写这么一个借口模块有时候确实感到挺麻烦的。怎么办呢,有没有工具生成这种接口呢?
- swig (Simple Wrapper and Interface Generator)
-
sip (PyQt4采用)
- boost.python
-
shiboken (PySide采用)
ctypes
- ctypes 和上面的工具工作方式不同,它是Python的标准模块,似乎相当强大
调用 win32 的对话框
from ctypes import * windll.user32.MessageBoxA(0, "great", 'hello world', 0)
调用 C 运行库中的 sin 函数
from ctypes import * fun = cdll.msvcrt.sin fun.argtypes = [c_double] fun.restype = c_double print fun(3.14159)
C 调用 Python
C调用Python,即将Python嵌入到C中。和前面的Python调用C相比,这个就显得复杂很多。
manual 的 一个简单例子:
#include <Python.h>
int main(int argc, char *argv[]) { Py_Initialize(); PyRun_SimpleString("from time import time,ctime\n" "print 'Today is',ctime(time())\n"); Py_Finalize(); return 0; }
包含 头文件, 调用 Py_Initialize()和 Py_Finalize()函数,中间语句执行python语句
然后编译链接。
|