安裝完python後,把python的include和lib拷貝到本身的工程目錄下python
而後在工程中包括進去ios
先寫一個python的測試腳本,以下app
這個腳本里面定義了兩個函數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++代碼能夠引用它。加密
運行結果:spa
在發佈軟件的時候,一般咱們都不但願代碼能夠直接被別人看到。code
以上的Debug目錄中的exe要想可以單獨運行,必須把python腳本拷過去。爲了避免讓別人能直接看到個人代碼,我拷過去的是生成的.pyc文件blog
拷過去以後修改文件名爲:get
實現了一個簡單的python代碼的加密。
不過聽說能夠反編譯,可是對我來講已經夠了。