91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-10-02 23:02:10 來源:腳本之家 閱讀:296 作者:Sanrice3 欄目:編程語言

1.環境配置

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

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

然后在工程中包括進去

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

2.例子

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

詳解C++調用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++代碼可以引用它。

運行結果:

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

3.python代碼處理

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

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

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

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

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

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

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

總結

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

肥城市| 河北省| 平顺县| 滕州市| 彰武县| 柳江县| 土默特右旗| 根河市| 独山县| 通州市| 衡山县| 色达县| 商都县| 五常市| 上栗县| 余江县| 枣庄市| 舒城县| 六安市| 中方县| 扎鲁特旗| 彭州市| 礼泉县| 武强县| 新河县| 兴城市| 收藏| 甘德县| 鹤山市| 宝丰县| 津南区| 南雄市| 巍山| 屏山县| 呼和浩特市| 和田市| 五莲县| 黑水县| 石狮市| 广元市| 凉山|