Hi all,

I am having trouble with a really simple example, and I am hoping someone on 
this list can help me.

I have created a github repo for code in question:

    git clone g...@github.com:brianbruggeman/boost_python_hello_world.git

I have also created a stack overflow question:

    http://stackoverflow.com/q/25533329/631199

The basic problem is as follows:

    Currently, I am able to compile cleanly, but when executing the code, I 
receive a segmentation fault. I've narrowed the seg-fault down to the line 
which actually uses boost::python::extract.

Code:

    #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;
    }

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})

Also for completeness…

I installed Python and Boost::Python using the following…

    brew install python
    brew install boost —with-python

Thanks so much in advance!

Brian
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
https://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to