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...