從嵌入式Python中提取數據我想學習一點boost :: python,並且我被困在從python字符串中提取數據。使用Boost :: Python
目前,我能夠乾淨地編譯,但是在執行代碼時,我收到了一個段錯誤。我已經將seg-fault縮小到了實際使用boost :: python :: extract的那一行。
我希望得到指導。提前致謝!
爲了方便起見,我提供了一個GitHub庫:https://github.com/brianbruggeman/boost_python_hello_world/tree/feature/stack_overflow
.cpp的代碼(say_hello.cpp):
#include <boost/python.hpp>
#include <iostream>
namespace bp = boost::python;
// Embedding python
int main(int argc, char** argv) {
int data = 0;
Py_Initialize();
PyRun_SimpleString("data = 1");
bp::object module(bp::handle<>(bp::borrowed(PyImport_AddModule("__main__"))));
bp::object dictionary = module.attr("__dict__");
bp::object data_obj = dictionary["data"];
// Error: The following line has the segmentation fault...
data = bp::extract<int>(data_obj);
std::cout << "data = " << data << std::endl;
Py_Finalize();
return 0;
}
我在做什麼錯?爲了完整起見,我使用的是Mac OS X的小牛隊和我包括下面的CMakeLists.txt文件:
project(hello)
cmake_minimum_required(VERSION 2.8)
FIND_PACKAGE(PythonInterp)
FIND_PACKAGE(PythonLibs)
FIND_PACKAGE(Boost COMPONENTS python)
include_directories(${PYTHON_INCLUDE_DIRS} ${Boost_INCLUD_DIRS})
link_directories(${PYTHON_LIBRARY_DIRS} ${Boost_LIBRARY_DIRS})
add_executable(hello say_hello.cpp)
target_link_libraries(hello
${Boost_LIBRARIES}
${PYTHON_LIBRARIES})
Python的編譯,並使用自制軟件安裝:
brew install python
加速編譯和安裝使用自制軟件:
brew install boost --with-python
Edit(對於升壓蟒蛇新安裝):
brew install --build-from-source boost-python
謝謝你的見解! (y) – 2014-08-31 18:55:31
今天,應該安裝boost-python: brew install --build-from-source boost-python – 2014-12-16 18:18:59