简单boost::python程序崩溃

简单boost::python程序崩溃,python,c++,boost,Python,C++,Boost,我需要将cpp扩展集成到python中。因此,我认为boost::python可能是一种很好的方法。在运行了一个简单的示例之后,我目前遇到了一些我不理解的问题。请查看以下代码: betainv.cpp #include <boost/python.hpp> #include <boost/math/distributions/beta.hpp> using namespace boost::python; class betainvClass { public

我需要将cpp扩展集成到python中。因此,我认为boost::python可能是一种很好的方法。在运行了一个简单的示例之后,我目前遇到了一些我不理解的问题。请查看以下代码:

betainv.cpp

#include <boost/python.hpp>
#include <boost/math/distributions/beta.hpp>

using namespace boost::python;

class betainvClass {
    public: double betainv(double p, double a, double b);
};

double betainvClass::betainv(double p, double a, double b) { 
    return boost::math::ibeta_inv(a, b, p);
}

// Expose classes and methods to Python
BOOST_PYTHON_MODULE(betainv) {
    class_<betainvClass> ("create_betainv_instance")
        .def("betainv", &betainvClass::betainv)
    ;
}
还有Makefile

TARGET = betainv
PYTHON = /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/include/python2.7
BOOST_INC = /usr/local/include
BOOST_LIB = /usr/local/lib

$(TARGET).so: $(TARGET).o
    g++ -shared -Wl \
    $(TARGET).o -L$(BOOST_LIB) -lboost_python \
    -L/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config -lpython2.7 \
    -o betainv.so

$(TARGET).o: $(TARGET).cpp
    g++ -I$(PYTHON) -I$(BOOST_INC) -c $(TARGET).cpp

clean:
    rm -f *.o *.a *.so *~ core
编辑工作做得很好。但是,在执行程序时,我得到以下错误:

python betainv.py 
Fatal Python error: PyThreadState_Get: no current thread
Abort trap: 6

有人知道我做错了什么吗?

好的,我知道了。实际上上面的代码是正确的。然而,我使用的是MacOSX,我将boost库与python安装的自制软件相链接。编译之后,我使用原始的苹果版python执行了python代码。因此存在二进制不兼容(有关更多信息,请参见此处:)

使用自制python安装运行代码效果良好

谢谢你的阅读

python betainv.py 
Fatal Python error: PyThreadState_Get: no current thread
Abort trap: 6