ubuntu 16.04 C++ 调用python脚本实现方式

7 篇文章 1 订阅
3 篇文章 0 订阅

大家好,最近项目需要用调用python脚本,在过去一般都是把 python 调用c++ 的扩展库.扩展python 的功能.
这里想使用c++程序调用执行python中定义的函数,应该也是可行的.

1配置下cmake

cmake_minimum_required(VERSION 2.8)
project(python_test)
set(CMAKE_BUILD_TYPE Debug)

find_package(Boost COMPONENTS thread serialization python REQUIRED)
include_directories(${Boost_INCLUDE_DIR} 
/usr/include/python2.7)

add_executable(python_cpp
    python_main.cc)

target_link_libraries(python_cpp
    ${Boost_LIBRARIES}
    /usr/lib/x86_64-linux-gnu/libboost_python-py27.so
    /usr/lib/x86_64-linux-gnu/libstdc++.so.6
    /usr/lib/x86_64-linux-gnu/libpython2.7.so
    )    

2 c++ 部分

#include <iostream>
#include <boost/python.hpp>
using namespace std;
using namespace boost::python;

int main()
{
      Py_Initialize();
      if(!Py_IsInitialized())
      {
          std::cout <<"1" <<std::endl;
          return -1;
      }
      PyRun_SimpleString("import sys");
      int argc = 1;
      char *argv[1];
      argv[0] = "/home/hunkyu/xxxxx/test.py";
      PySys_SetArgv(argc, argv);

      if(PyRun_SimpleString("execfile('/home/hunkyu/xxxxx/test.py')") == NULL)
      {
          std::cout <<"2" <<std::endl;
          return -1;
      }
      Py_Finalize();
      return 0;
}

3 python 脚本

这里随便写个test.py

import sys
def test():
    for arg in sys.argv:
        print arg

if __name__=='__main__':
    test()

写完了, 记得转载,来个链接偶!!!!

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值