Windows系统版本:

环境配置:

1、安装python

2、安装Visual Studio ,打开Vs创建test项目。

3、点击项目选择属性,点击VC++目录,将Python中的include路径和libs路径加入其中,点击应用,如下图所示

4、选择链接器中的输入

将安装libs中的python38.lib的路径复制粘贴加入上面的附件依赖中

5、编译c++项目,然后将python脚本加入到c++项目中,并且要与test.exe在同一级目录

到此配置环境也就结束了,接下来测试一下

环境测试

对于c++,我们在test项目中创建源文件test.cpp

test.cpp

#include <Python.h>//调用python脚本必修导入该头文件

#include <iostream>


int main() {


    //使用python之前,要调用Py_Initialize();这个函数进行初始化

    Py_Initialize();

    //导入环境变量

    PyRun_SimpleString("import sys");

    //python脚本路径

    PyRun_SimpleString("sys.path.append('./')"); //放在cpp的同一路径下

    PyObject* pModule = NULL;

    PyObject* pFunc = NULL;

    PyObject* pClass = NULL;

    PyObject* pInstance = NULL;

    // PyImport_ImportModule函数载入python脚本,参数为为python脚本名称,因为是//模块化的导入,所以当代码处于运行期的时候就会生成一个.pyc文件,这样的话和直//接使用.pyc文件有同样的效果,下面做了两种方式运行效率的比较

    pModule = PyImport_ImportModule("mytest");//此出的mytest是python脚本的名称


    //调用Py_Finalize,这个根Py_Initialize相对应的。

    Py_Finalize();

    return 0;

}

 mytest.py,记得该文件一定要与test.exe放在同一目录

mytest.py

import numpy as np
#导入numpy模块
import elkai
#导入elkai模型,该模型是用于求TSP问题LKH算法的一个轮子
Array=np.array([[0,2,1],[2,0,3],[1,3,0]])
#创建一个距离的二维矩阵

print(elkai.solve_int_matrix(Array))
#输出该模型计算后的最优TSP结果

编译生成test.exe文件。

 开始调试

 调试成功,结果如下:

 Linux系统版本:

1、安装python

2、安装python相应库,如:pip3 install numpy;和pip3 install elkai

3、创建项目文件夹,添加mytest.py和test.cpp

4、编译程序: g++ test.cpp -I /usr/include/python3.6m -L /usr/lib/x86_64-linux-gnu -lpython3.6m  

也可以选择写CMakeLists.txt来编译程序,在项目文件多的时候更加实用

cmake_minimum_required( VERSION 2.8 )
project ( code_test )
 
set( CMAKE_CXX_COMPILER "g++" )
set( CMAKE_BUILD_TYPE "Debug" )
set( CMAKE_CXX_FLAGS "-std=c++11 -O0" )
 
include_directories(
    /usr/include/python3.6m
)
 
link_directories(
    /usr/lib/x86_64-linux-gnu
)
 
add_executable( run_test test.cpp )
target_link_libraries(run_test
    libpython3.6m.so
)

如果选择写Makefile,一定要加入相应python库的路径

5、执行程序:./a.out

如下图:

来源:兔子brother

物联沃分享整理
物联沃-IOTWORD物联网 » c++调用python脚本

发表评论