C++嵌入python

來源:互聯網
上載者:User

C++嵌入python

       把python的include/libs目錄分別加到vc的include/lib directories中去。另外,由於python沒有提供debug lib,體地說,就是沒有提供python25_d.lib了。你可以自己編譯python的原始碼來得到python25_d.lib。所以,如果你想要在debug下運行程式的話,你要把pyconfig.h(在python25/include/目錄下)的大概是在283行,把pragma comment(lib,"python32_d.lib")改成pragma
comment(lib,"python32.lib"),讓python都使用非debug lib.

 

#include<python/python.h> //包含標頭檔,在c++中嵌入python,這是必須的</p><p>int main()<br />{<br /> //調用python之前的初始化操作<br /> Py_Initialize();</p><p> PyObject * pModule = NULL;<br /> PyObject * pFunc = NULL;</p><p> //import指令碼<br /> pModule =PyImport_ImportModule("gmail");</p><p> //從import的module中擷取函數<br /> pFunc = PyObject_GetAttrString(pModule, "Hello");</p><p> //調用PyEval_CallObject來執行你的函數<br /> PyEval_CallObject(pFunc, NULL);</p><p> Py_Finalize();</p><p> return 0;<br />}<br />

一個有一個參數的例子

python檔案
#Filename test2.py<br />def Hello(s):<br /> print "Hello, world!"<br /> print s

cpp檔案
#include <python.h><br />int main()<br />{<br /> Py_Initialize();<br /> PyObject* pModule = NULL;<br /> PyObject * pFunc = NULL;<br /> PyObject * pArg = NULL;<br /> pModule= PyImport_ImportModule("test2");<br /> pFunc = PyObject_GetAttrString(pModule, "Hello");<br /> pArg = Py_BuildValue("(s)", "functionwith argument");<br /> PyEval_CallObject(pFunc,pArg);<br /> Py_Finalize();<br /> return0;<br />}

使用python與C++混合編程寄送電子郵件:

//gmail.py<br />import smtplib<br />fromemail.mime.text import MIMEText</p><p>defSendEmail(str):<br /> fromaddr = 'from @gmail.com'<br /> toaddrs = 'to@163.com'<br /> msg = MIMEText(str)<br /> msg['Subject'] = 'I miss you'<br /> msg['From'] = 'from@gmail.com'<br /> msg['To'] = 'to@163.com'<br /> # Credentials (if needed)<br /> username = 'from'<br /> password = 'password'<br /> # The actual mail send<br /> server = smtplib.SMTP('smtp.gmail.com:587')<br /> server.starttls()<br /> server.login(username,password)<br /> server.sendmail(fromaddr, toaddrs,msg.as_string())<br /> server.quit()</p><p>a = 'hacky.grey'

 

//main.cpp<br />#include<python/python.h> //包含標頭檔,在c++中嵌入python,這是必須的</p><p>int main()<br />{<br /> //調用python之前的初始化操作<br /> Py_Initialize();</p><p> PyObject * pModule = NULL;<br /> PyObject * pFunc = NULL;<br /> PyObject * pArg = NULL;</p><p> //import指令碼<br /> pModule =PyImport_ImportModule("gmail");</p><p> //從import的module中擷取函數<br /> pFunc = PyObject_GetAttrString(pModule, "SendEmail");</p><p> //構造一個字串<br /> pArg = Py_BuildValue("(s)", "You have done a good job!");//構造一個元組</p><p> //調用PyEval_CallObject來執行你的函數<br /> PyEval_CallObject(pFunc, pArg);</p><p> Py_Finalize();</p><p> system("pause");</p><p> return 0;<br />}
另外發現在py檔案中如果沒有能夠直接執行的語句會出錯

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.