手机版
你好,游客 登录 注册
背景:
阅读新闻

Ubuntu 16.04下C++调用Python3.5程序

[日期:2019-03-02] 来源:Linux社区  作者:TangCode [字体: ]

Ubuntu 16.04下C++调用Python3.5程序过程记录。

Python程序

#call.py
import sys
def call():
    print("hello world")
if __name__ = '__main__':
    call()

C++代码

#include <iostream>
#include <boost/python.hpp>
using namespace std;
using namespace boost::python;
int main()
{
 Py_Initialize();
 if (!Py_IsInitialize())
 {
  cout << 'Fail 1' << endl;
  return -1;
 }
 Pyrun_SimpleString("import sys")
 int argc = 1;
 wchar_t argv[1]; //python2使用char,与python3有区别
 argv[0] = L"/home/tyl/code/call.py";
 PySys_setArgv(argc,argv);
 if (PyRun_SimpleString("exec(open('/home/tyl/code/call.py').read())"))
 {
  cout << "Fail 2" <<endl;
  return -1;
 }
 Py_Finalize();
 return 0;
}

CMakeLists文件

cmake_minimum_required(VERSION 2.6)
project(test)
set (CMAKE_BUILD_TYPE Debug)

find_package(Boost COMPONENTS thread serialization python REQUIRED)

include_directories(${Boost_INCLUDE_DIR}
            /usr/include/python3.5)     
add_executable(test main.cpp)
target_link_libraries(test
        ${Boost_LIBRARIES}
        /usr/lib/x86_64-linux-gnu/libboost_python-py35.so
        /usr/lib/x86_64-linux-gnu/libstdc++.so.6
        /usr/lib/x86_64-linux-gnu/libpython3.5m.so
        )
install(TARGETS test RUNTIME DESTINATION bin)

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址https://www.linuxidc.com/Linux/2019-03/157202.htm

linux
相关资讯       C++调用Python3.5程序 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款