c 中嵌入python入門3

2021-06-01 00:21:44 字數 2737 閱讀 7970

c++中嵌入python入門3

這次主要講講怎麼把python中的class嵌入到c++中去。順便講講元組的操作和怎麼編譯python源**。

1. 首先講講元組的操作

由於引數是通過元組傳進去的,所以我們不能老是通過py_buildvalue這個函式來操作元組,那樣太不方便了。

python提供了元組相關的操作,下面這個例子演示了如何操作。主要是下面幾個函式:

1.           //new乙個元組,傳入size 

2.           pargs = pytuple_new(argc - 3);  

3.           //set元組的直,第乙個為元組,第二個為index(從0開始),第三個為value 

4.           pytuple_setitem(pargs,0,py_buildvalue("i",2000) ); 

5.           pytuple_setitem(pargs,1,py_buildvalue("i",8) ); 

來自python doc的乙個例子

1.           #include 

2.           int main(int argc, char *argv) 

3.            

12.        

13.           py_initialize(); 

14.           pname = pystring_fromstring(argv[1]); 

15.           /* error checking of pname left out */ 

16.        

17.           pmodule = pyimport_import(pname); 

18.           py_decref(pname); 

19.        

20.           if (pmodule != null)  

34.                       /* pvalue reference stolen here: */ 

35.                       pytuple_setitem(pargs, i, pvalue); 

36.                   } 

37.                   pvalue = pyobject_callobject(pfunc, pargs); 

38.                   py_decref(pargs); 

39.                   if (pvalue != null)  

43.                   else  

50.               } 

51.               else  

56.               py_xdecref(pfunc); 

57.               py_decref(pmodule); 

58.           } 

59.           else  

64.           py_finalize(); 

65.           return 0; 

66.       } 

2. class操作

把下面加入到test2.py中去。定義了乙個很簡單的類,有乙個name成員變數,乙個printname成員函式

1.           class testclass: 

2.               def __init__(self,name): 

3.                   self.name = name 

4.            

5.               def printname(self): 

6.                   print self.name 

cpp檔案

1.           #include 

2.           int main() 

3.            

沒有什麼資料,就先寫到這裡了。下面介紹一下怎麼build python25的源**

3. 編譯python源**

為什麼要編譯呢?因為沒有python25_d.lib!呵呵。順便可以了解一下**結構。

解壓縮後,有好多目錄,其中pcbuild和pcbuild8是我們要的。pcbuild對應著vc7.1的,pcbuild8對應著vc8.0的

因為在用vc7.1,也就是2003了。所以我就說說怎麼用2003來編譯吧。事實上是從一位牛人那裡學來的

那位大哥大概一年半前就在解剖python了,厲害阿。看來我只能後來居上了,娃哈哈。我按照他說的試了一下,編譯成功!

不過遇到一點小問題,用vc2003開啟那個solution的時候,發現作者沒有把source code control去掉,鬱悶!害的我

們開啟的時候一堆messagebox。不過不用管它就好了,一直確定。最後試了一下那個python25_d.lib,沒問題。不過記

得把python25_d.dll copy到乙個能被找到的目錄,比如說c:\windows\system32\下面。python25.dll也在這個目錄下

面。over。恩。

c 中嵌入python入門1

本人是用vc2003 python2.5學習的,其它的也應該差不了多少 1.開始程式設計了 include 第一步就是包含python的標頭檔案 2.看乙個很簡單的例子 1 python檔案test.py,很簡單的定義了乙個函式 filename test.py def hello print he...

python嵌入到C 中

在了解下面的函式之前有必要了解一下 pyobject 指標,python裡面幾乎所有的物件都是使用這個指標來指示的。py initialize py finalize 在呼叫任何python的c函式之前需要呼叫的函式,py initialize 是用來初始化python模組的,推測是載入初始化載入d...

c python函式 在C中嵌入python函式

我正在嘗試使用cython從 python生成c 但似乎存在名稱重整的一些問題.我首先生成將 從python轉換為c 然後使用gcc將 編譯成.so.我想使用cython而不是c python api的原因是因為我稍後會在更複雜的類上使用它,我希望以後成為乙個速度等的庫 我很難找到去的人從pytho...