欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ubuntu c++ 调用 python实现交互

程序员文章站 2022-05-21 11:57:20
环境 ubuntu16.04因为手头上的工作需要用到c++与python的交互,所以写下这个博客.1.c++1.1 test.cpp#include int main(int argc, char *argv[]) { Py_Initialize(); //判断初始化是否成功 if(!Py_IsInitialized()) { printf("Python init failed!\n"); retu...

环境 ubuntu16.04

因为手头上的工作需要用到c++与python的交互,所以写下这个博客.

1.c++

1.1 test.cpp

#include <Python.h>
int main(int argc, char *argv[]) {
    Py_Initialize();

    //判断初始化是否成功
    if(!Py_IsInitialized())
    {
        printf("Python init failed!\n");
        return -1;
    }
    PyRun_SimpleString("import sys");
    //PyRun_SimpleString("sys.path.append('./')");//若python文件在c++工程下
    // 添加python文件所在的位置
    PyRun_SimpleString("sys.path.append('/home/jinye/projects/D3Feat')");
    PyObject* pModule = NULL;
    PyObject* pFunc = NULL;

	//导入python文件
    pModule = PyImport_ImportModule("forcpp");
    if (!pModule) {
        printf("Can not open python file!\n");
        return -1;
    }

    pFunc = PyObject_GetAttrString(pModule, "printHello");
    //PyEval_CallObject(pFunc, NULL);
    PyObject_CallObject(pFunc, NULL);

    Py_DECREF(pFunc);
    Py_DECREF(pModule);
    Py_Finalize();
    return 0;
}

1.2 CMakeLists.txt

cmake_minimum_required(VERSION 2.8)
project(python_test)

include_directories(
    /usr/include/python2.7
)

add_executable(test
    test.cpp)
target_link_libraries(test
    /usr/lib/x86_64-linux-gnu/libpython2.7.so
)

2.python

import sys

def printHello():
    print(sys.version)
    print("hello world!")

这里,还把python的版本号打印出来了.

3.结尾

ubuntu c++ 调用 python实现交互
现在用的还是系统带的python2.7版本,因为想用conda环境的python版本,修改头文件和库文件遇到了问题,尴尬…
修改好了!可以参看这篇博客
ubuntu c++ 调用 conda的python虚拟环境

参考
https://www.cnblogs.com/Pan-Z/p/7126630.html

本文地址:https://blog.csdn.net/HelloJinYe/article/details/107153501