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.结尾
现在用的还是系统带的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