国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

詳解C++調用Python腳本中的函數的實例代碼

2020-01-26 13:38:04
字體:
來源:轉載
供稿:網友

1.環境配置

安裝完python后,把python的include和lib拷貝到自己的工程目錄下

然后在工程中包括進去

2.例子

先寫一個python的測試腳本,如下

這個腳本里面定義了兩個函數Hello()和_add()。我的腳本的文件名叫mytest.py

C++代碼:

#include "stdafx.h" #include <stdlib.h>#include <iostream> #include "include/Python.h"using namespace std;int _tmain(int argc, _TCHAR* argv[]){  //初始化Python環境   Py_Initialize();  PyRun_SimpleString("import sys");  //添加Insert模塊路徑   //PyRun_SimpleString(chdir_cmd.c_str());  PyRun_SimpleString("sys.path.append('./')");  //導入模塊   PyObject* pModule = PyImport_ImportModule("mytest");  if (!pModule)  {    cout << "Python get module failed." << endl;    return 0;  }  cout << "Python get module succeed." << endl;  PyObject * pFunc = NULL;  pFunc = PyObject_GetAttrString(pModule, "Hello");  PyEval_CallObject(pFunc, NULL);  //獲取Insert模塊內_add函數   PyObject* pv = PyObject_GetAttrString(pModule, "_add");  if (!pv || !PyCallable_Check(pv))  {    cout << "Can't find funftion (_add)" << endl;    return 0;  }  cout << "Get function (_add) succeed." << endl;  //初始化要傳入的參數,args配置成傳入兩個參數的模式   PyObject* args = PyTuple_New(2);  //將Long型數據轉換成Python可接收的類型   PyObject* arg1 = PyLong_FromLong(4);  PyObject* arg2 = PyLong_FromLong(3);  //將arg1配置為arg帶入的第一個參數   PyTuple_SetItem(args, 0, arg1);  //將arg1配置為arg帶入的第二個參數   PyTuple_SetItem(args, 1, arg2);  //傳入參數調用函數,并獲取返回值   PyObject* pRet = PyObject_CallObject(pv, args);  if (pRet)  {    //將返回值轉換成long型     long result = PyLong_AsLong(pRet);    cout << "result:" << result << endl ;  }  Py_Finalize();  system("pause");  return 0;}

注意腳本放的位置,確保C++代碼可以引用它。

運行結果:

3.python代碼處理

在發布軟件的時候,通常我們都不希望代碼可以直接被別人看到。

以上的Debug目錄中的exe要想能夠單獨運行,必須把python腳本拷過去。為了不讓別人能直接看到我的代碼,我拷過去的是生成的.pyc文件

拷過去之后修改文件名為:

實現了一個簡單的python代碼的加密。

不過據說可以反編譯,但是對我來說已經夠了。

總結

以上所述是小編給大家介紹的詳解C++調用Python腳本中的函數的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 瑞丽市| 横山县| 巴林右旗| 安岳县| 望城县| 凤阳县| 锦州市| 观塘区| 潜山县| 会宁县| 宁津县| 兴山县| 宁化县| 桦甸市| 长子县| 寿阳县| 简阳市| 克什克腾旗| 麻阳| 淮滨县| 屯留县| 连云港市| 廊坊市| 长葛市| 大英县| 华蓥市| 清原| 涟水县| 海门市| 天气| 伊吾县| 广河县| 阆中市| 南华县| 澄江县| 临沭县| 德安县| 西安市| 司法| 县级市| 济南市|