zoukankan      html  css  js  c++  java
  • VS调用python方法

    1、  安装python3.7

    2、  Vs2010中配置python:

    3、添加头文件:#include <Python.h>

    4、问题:error LNK2001: 无法解析的外部符号 __imp__Py_Initialize@0

    原因: 由于Python版本和项目编译版本不匹配导致这个问题,本文出错的原因是

    解决: 1. 使用 Python x86版本,VS项目更改为Win32,包含目录及库目录一律为Python x86,可正常编译

           2. 使用 Python x64版本,通过配置管理器,在活动解决方案平台中新建X64平台,包含目录及库目录一律为Python x64,可正常编译

     

    5、问题:error MSB6006:"CL.exe"已退出,代码为5

    解决:在更改VC++目录时,改每个目录要注意把下面的“从父级或项目默认设置继承”勾选上。

    VS调用python常用接口:

    void Py_Initialize(void)

    初始化Python解释器,如果初始化失败,继续下面的调用会出现各种错误,可惜的是此函数没有返回值来判断是否初始化成功,如果失败会导致致命错误。

    int Py_IsInitialized(void)

    检查是否已经进行了初始化,如果返回0,表示没有进行过初始化。

    void Py_Finalize()

    反初始化Python解释器,包括子解释器,调用此函数同时会释放Python解释器所占用的资源。

    int PyRun_SimpleString(const char *command)

    实际上是一个宏,执行一段Python代码。

    PyObject* PyImport_ImportModule(char *name)

    导入一个Python模块,参数name可以是*.py文件的文件名。类似Python内建函数import。

    PyObject* PyModule_GetDict( PyObject *module)

    相当于Python模块对象的dict属性,得到模块名称空间下的字典对象。

    PyObject* PyRun_String(const char* str, int start,PyObject* globals, PyObject* locals)

    执行一段Python代码。

    int PyArg_Parse(PyObject* args, char* format, …)

    把Python数据类型解析为C的类型,这样C程序中才可以使用Python里面的数据。

    PyObject* PyObject_GetAttrString(PyObject *o, char*attr_name)

    返回模块对象o中的attr_name 属性或函数,相当于Python中表达式语句,o.attr_name。

    PyObject* Py_BuildValue(char* format, …)

    和PyArg_Parse刚好相反,构建一个参数列表,把C类型转换为Python对象,使得Python里面可以使用C类型数据。

    PyObject* PyEval_CallObject(PyObject* pfunc, PyObject*pargs)

    此函数有两个参数,而且都是Python对象指针,其中pfunc是要调用的Python 函数,一般说来可以使用PyObject_GetAttrString()获得,pargs是函数的参数列表,通常是使用Py_BuildValue()来构建。

  • 相关阅读:
    jdk .tar.gz 包安装 inAction
    Consistent Hashing原理与实现
    开放GitHub的理由
    dll signing issue
    Regular expression cheat sheet
    DOMElement之Offset
    扫码支付测试点
    SQL注入是什么?如何防止?
    什么是接口测试?为什么要做接口测试?如何开展接口测试?
    软件测试的常识
  • 原文地址:https://www.cnblogs.com/hejing-swust/p/10174306.html
Copyright © 2011-2022 走看看