<强> 1。环境配置强>
python安装完后,把python的包括和自由拷贝到自己的工程目录下
然后在工程中包括进去
<强> 2。例子强>
先写一个python的测试脚本,如下
这个脚本里面定义了两个函数Hello()和_add()。我的脚本的文件名叫mytest.py
c++代码:
# include“stdafx.h” # include & lt; stdlib.h> # include & lt; iostream> # include "包括\ Python.h " 使用名称空间性病; int _tmain (int命令行参数个数,_TCHAR * argv []) {//初始化Python环境 Py_Initialize (); PyRun_SimpleString(“进口sys”);//添加插入模块路径//PyRun_SimpleString (chdir_cmd.c_str ()); PyRun_SimpleString (“sys.path.append ('/') ");//导入模块 PyObject * pModule=PyImport_ImportModule (“mytest”); 如果(! pModule) { cout & lt; & lt;“Python模块失败了。”& lt; & lt;endl; 返回0; } cout & lt; & lt;“Python模块成功。”& lt; & lt;endl; PyObject * pFunc=零; pFunc=PyObject_GetAttrString (pModule,“你好”); PyEval_CallObject (pFunc, NULL);//获取插入模块内_add函数 PyObject * pv=PyObject_GetAttrString (pModule _add); 如果(!pv | | ! PyCallable_Check (pv)) { cout & lt; & lt;“找不到funftion (_add)”& lt; & lt;endl; 返回0; } cout & lt; & lt;“功能”(_add)成功。& lt; & lt;endl;//初始化要传入的参数,arg游戏配置成传入两个参数的模式 PyObject * args=PyTuple_New (2);//将长型数据转换成Python可接收的类型 PyObject * __arg1=PyLong_FromLong (4); PyObject *最长=PyLong_FromLong (3);//将__arg1配置为参数带入的第一个参数 PyTuple_SetItem (args 0 __arg1);//将__arg1配置为参数带入的第二个参数 PyTuple_SetItem (args, 1)最长);//传入参数调用函数,并获取返回值 PyObject *成衣的=PyObject_CallObject (pv, args); 如果(现成的) {//将返回值转换成型 长期结果=PyLong_AsLong(现成的); cout & lt; & lt;结果:“& lt; & lt;结果& lt; & lt;endl; } Py_Finalize (); 系统(“暂停”); 返回0; }
注意脚本放的位置,确保c++代码可以引用它。
运行结果:
<强> python 3.代码处理强>
在发布软件的时候,通常我们都不希望代码可以直接被别人看到。
以上的调试目录中的exe要想能够单独运行,必须把python脚本拷过去。为了不让别人能直接看到我的代码,我拷过去的是生成的.pyc文件
拷过去之后修改文件名为:
实现了一个简单的python代码的加密。
不过据说可以反编译,但是对我来说已经够了。
以上所述是小编给大家介绍的详解c++调用Python脚本中的函数的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留的言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!