<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">最近工作上需要把python embed到legacy的APP里面去,用了下python/C API, 感觉写起来很麻烦,stackoverflow上看了下,大家都推荐用boost做这个事情,所以这里学习一下。</span>
因为自己用的是mac, 10.10编译起来很麻烦,最后弄了个virtual machine,在fedora上编译
首先要安装boost:
yum install boost
yum install boost-dev
然后尝试编译给的例子:
#include <boost/python.hpp>
using namespace boost::python;
int main( int argc, char ** argv ) {
try {
Py_Initialize();
object main_module((
handle<>(borrowed(PyImport_AddModule("__main__")))));
object main_namespace = main_module.attr("__dict__");
handle<> ignored(( PyRun_String( "print \"Hello, World\"",
Py_file_input,
main_namespace.ptr(),
main_namespace.ptr() ) ));
} catch( error_already_set ) {
PyErr_Print();
}
}
编译命令:
g++ -I /usr/include/python2.7/ -I /usr/include/ -L /usr/lib/ -lboost_python -lpython2.7 test.C
hello world就可以工作了,其实python/C API 比这个要简单的多,后面学习中会体现出他的强大