實現python擴展的C API方法過程全紀錄(windows)

第一步:安裝編譯器php

推薦使用mingw,使用最爲便利,能夠避免各類難以記憶和看不懂的設置。
html

下載只需安裝其中的gcc部分便可,而且將編譯器所在文件夾添加的環境變量path之下,例如:python

pah = %path%;c:\minGW\binlinux

第二步:安裝pythonapi

推薦使用pythonxy,安裝最爲方便,省去不少沒必要要的麻煩。數組

第三步:寫一段測試代碼函數

基本方法就是:C函數+c API 包裝器,靜態數組,模塊初始化測試

//pythonc.c
#include <python.h>
#include <stdio.h>

void hello_pythoncapi(void){
	printf("hello python");
}

static PyObject* pythoncapi(PyObject *self,PyObject*args){
	char *inArgs = NULL;
	PyArg_ParseTuple(args,"s",&inArgs);
	printf("%s\n",inArgs);
	hello_pythoncapi();
	return PyString_FromFormat("hello PYHTON C API");
}

static PyMethodDef methods[]={
{"pythoncapi",pythoncapi,METH_VARARGS,"test python extension"},
{ NULL, NULL}
};

/*__declspec(dllexport)*/ void initpythonc(void) /*the string after "init" must be same with code file */
{
	Py_InitModule("pythonc",methods);/*the 1st parameter string must be same with code file */
}

第四步: 編譯spa

打開cmd,並運行以下命令code

gcc c:\MinGW\pythonc.c -shared -Ic:\Python27\include -Lc:\Python27\libs -lpython27 -o pythonc.pyd

圖中的當前路徑是c:\Python27\libs,編譯成功後,pythonc.pyd將保存在這個路徑下。

第五步 使用擴展庫

將pythonc.pyd拷貝至python路徑下的Lib\site_packages文件夾,能夠使用import導出模塊並調用pythoncapi()函數。


說明:

-Ic:\Python27\include 用於指明頭文件python.h所在的文件夾

-Lc:\Python27\libs 和-lpython27一塊兒指明瞭python c api函數庫所在的文件夾與庫文件名稱(Windows下爲libpython27.a)

參考:

http://www.linuxidc.com/Linux/2012-02/55038.htm

http://oldwiki.mingw.org/index.php/Python%20extensions

https://docs.python.org/2/extending/extending.html#

相關文章
相關標籤/搜索