zoukankan      html  css  js  c++  java
  • Python嵌入C++

    python是一门非常优秀而且优雅的语言,没有了分号和大括号的烦恼,是你在开发中不用再担心大括号匹配问题和语句结束分号遗漏的麻烦,好了,切入正题,本题谈的是如何将python嵌入到C++中去,让你的c++程序更上一层楼!
        1.安装python,去www.python.org下一个python 2.x和3.x的都行。
       2.首先要设置库文件,将python内目录下的include和lib包含进库文件和库包含中。
       好了,我们开始工作了,先看一个小程序:

    #include<python.h>
    #include
    <iostream>
    using namespace std;
    int main()
    {
    Py_Initialize();
    /* 初始化python解释器*/
    PyRun_SimpleString(
    "print 'hello world!'"); /* 调用python语句*/
    Py_Finalize();
    /*结束python解释器,释放资源*/
    }

    运行之后,将会在控制台程序下输出hello world!
    这就是我们的第一个程序,其中第一行和第三行是必须的,让我们来看看更多的代码,这是在c++程序中调用python脚本中的函数:
    我们先写一个脚本:
    ___def helloworld():
    _______print 'hello world!'
    然后保存为first.py文件到当前工程下的目录,代码如下:

    #include<python.h>
    int main()
    {
      PyObject* p_module = NULL;
      PyObject
    * p_func = NULL;
      Py_Initialize();
    /* Python解释器初始化 */
       p_module = PyImport_ImportModule("first");
      p_func
    = PyObject_GetAttrString(p_module, "hello");
      PyEval_CallObject(p_func, NULL);
      Py_Finalize();
    /* 结束Python解释器,释放资源 */
       return 0;
    }


    PyImport_ImportModule()是导入脚本的文件,参数是文件名
    PyObject_GetAttrString()是从你import的文件中找到指定的函数
    PyEval_CallObject()是调用你的函数,其中NULL部分为函数的参数。
    运行后,你将会看到hello world! 字符串。
    你也可以使用PyRun_SimpleString("execfile('first.py')"); 来执行脚本文件,其中execfile是什么意思我就不多说了吧?可以去开手册。

    好了,先写到这里了,还有高级的主题以后再说了。。。

  • 相关阅读:
    iOS 11: CORE ML—浅析
    Android 平台 Native 代码的崩溃捕获机制及实现
    H5直播避坑指南
    Mac系统升级至OS X Mavericks后Genymotion出现的问题及解决方法
    Android 4.4 KitKat终于支持录屏(Screen Recording)了!
    Android开发者资源大汇总
    用AndroidSDK中的Face Detector实现人脸识别
    [Android设计模式]Android退出应用程序终极方法
    ActionBarCompat 教程-实现Action Bar
    使用Roboguice依赖注入规划Android项目
  • 原文地址:https://www.cnblogs.com/lvpengms/p/1663070.html
Copyright © 2011-2022 走看看