用C或C++為Python編寫模組

來源:互聯網
上載者:User

標籤: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編寫模組

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.