真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

詳解C++調(diào)用Python腳本中的函數(shù)的實(shí)例代碼

1.環(huán)境配置

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:主機(jī)域名虛擬主機(jī)、營銷軟件、網(wǎng)站建設(shè)、呼蘭網(wǎng)站維護(hù)、網(wǎng)站推廣。

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

詳解C++調(diào)用Python腳本中的函數(shù)的實(shí)例代碼

然后在工程中包括進(jìn)去

詳解C++調(diào)用Python腳本中的函數(shù)的實(shí)例代碼詳解C++調(diào)用Python腳本中的函數(shù)的實(shí)例代碼

2.例子

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

詳解C++調(diào)用Python腳本中的函數(shù)的實(shí)例代碼

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

C++代碼:

#include "stdafx.h" 
#include 
#include  
#include "include\Python.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
  //初始化Python環(huán)境 
  Py_Initialize();
  PyRun_SimpleString("import sys");
  //添加Insert模塊路徑 
  //PyRun_SimpleString(chdir_cmd.c_str());
  PyRun_SimpleString("sys.path.append('./')");
  //導(dǎo)入模塊 
  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模塊內(nèi)_add函數(shù) 
  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;
  //初始化要傳入的參數(shù),args配置成傳入兩個參數(shù)的模式 
  PyObject* args = PyTuple_New(2);
  //將Long型數(shù)據(jù)轉(zhuǎn)換成Python可接收的類型 
  PyObject* arg1 = PyLong_FromLong(4);
  PyObject* arg2 = PyLong_FromLong(3);
  //將arg1配置為arg帶入的第一個參數(shù) 
  PyTuple_SetItem(args, 0, arg1);
  //將arg1配置為arg帶入的第二個參數(shù) 
  PyTuple_SetItem(args, 1, arg2);
  //傳入?yún)?shù)調(diào)用函數(shù),并獲取返回值 
  PyObject* pRet = PyObject_CallObject(pv, args);
  if (pRet)
  {
    //將返回值轉(zhuǎn)換成long型 
    long result = PyLong_AsLong(pRet);
    cout << "result:" << result << endl ;
  }
  Py_Finalize();
  system("pause");
  return 0;
}

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

運(yùn)行結(jié)果:

詳解C++調(diào)用Python腳本中的函數(shù)的實(shí)例代碼

3.python代碼處理

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

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

詳解C++調(diào)用Python腳本中的函數(shù)的實(shí)例代碼

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

詳解C++調(diào)用Python腳本中的函數(shù)的實(shí)例代碼

實(shí)現(xiàn)了一個簡單的python代碼的加密。

不過據(jù)說可以反編譯,但是對我來說已經(jīng)夠了。

總結(jié)

以上所述是小編給大家介紹的詳解C++調(diào)用Python腳本中的函數(shù)的實(shí)例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對創(chuàng)新互聯(lián)網(wǎng)站的支持!


網(wǎng)頁名稱:詳解C++調(diào)用Python腳本中的函數(shù)的實(shí)例代碼
文章URL:http://weahome.cn/article/goeosh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部