標籤:gpo env val bin c++編寫 number 初始化 color build
1、使用c或c++編寫對應的函數例如:
1 //modtest.c2 int abs(int number){3 if(number<0){4 return -number;5 }6 else{7 return number;8 }9 }
2、編寫每個函數對應的封裝函數:
1 static PyObject *modtest_abs(PyObject *self,Pyobject *args){2 int num; //定義參數類型3 if(!PyArg_ParseTuple(args,"i",&num)){ 4 //"i"表示資料類型 這裡進行參數傳遞類型檢查5 return NULL;6 }7 return (Pyobject*)Py_BulidValue("i",abs(num));8 //"i"傳回值類型,第二個參數為c/c++函數的調用後的傳回值9 }
3、編寫每個模組的PyMethodDef MoudleMethod數組:
1 static PyMethodDef modtestMethods[] = {2 {"abs",modtest_abs,METH_VARARGS},3 {...},//幾個函數就有幾個數組項,當然最後還有一個空項4 {NULL,NULL}5 };
4、編寫模組初始化函數:
1 void initmodtest(){2 Py_InitMoudle("modtest","modtestMethods");3 }
5、編譯:
建立setup檔案:
1 #!/usr/bin/env python2 from distutils.core import setup,Extension3 Mod = "modtest"4 setup(name=MOD, ext_modules=[Extension(MOD, sources=[‘modtest.c‘])])5 6 #python setup.py build
用C或C++為Python編寫模組