国产探花免费观看_亚洲丰满少妇自慰呻吟_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腳本中的函數的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洪泽县| 湟中县| 霍城县| 大竹县| 武定县| 资阳市| 苗栗县| 英吉沙县| 北碚区| 浦城县| 高邮市| 文山县| 错那县| 自治县| 左贡县| 江达县| 安化县| 江川县| 津南区| 四川省| 奈曼旗| 南投市| 阜平县| 灵台县| 昌图县| 曲麻莱县| 融水| 深泽县| 苍梧县| 连江县| 景德镇市| 米脂县| 从化市| 万载县| 四子王旗| 隆安县| 曲阜市| 祁阳县| 色达县| 额济纳旗| 淮阳县|