通过boostpython从python中提取常量值

通过boostpython从python中提取常量值,python,c++,boost,Python,C++,Boost,python的代码(哪一个有效) 我想提取ldap.OPT_TIMEOUT的常量值,但是如何提取呢 #include <iostream> #include <boost/python.hpp> int main() { namespace bp = boost::python; try{ Py_Initialize(); bp::object main_module = bp::import("__main__");

python的代码(哪一个有效)

我想提取ldap.OPT_TIMEOUT的常量值,但是如何提取呢

#include <iostream>

#include <boost/python.hpp>

int main()
{
    namespace bp = boost::python;
    try{
        Py_Initialize();
        bp::object main_module = bp::import("__main__");
        bp::import("ldap");
        bp::import("ldif");
        bp::object main_namespace = main_module.attr("__dict__");

        bp::exec("import ldap,ldif\n"
                 "l = ldap.initialize('ldaps://RIO-PC')\n",
             main_namespace);

        boost::python::object ldap = boost::python::extract<boost::python::object>(main_namespace["l"]);
        ldap.attr("OPT_TIMEOUT"); //this line will throw exception
    }catch(boost::python::error_already_set const &){               
        PyErr_Print();
        PyErr_Clear();
    }
}
#包括
#包括
int main()
{
名称空间bp=boost::python;
试一试{
Py_初始化();
bp::object main_module=bp::import(“_main__;”);
导入(“ldap”);
bp::进口(“ldif”);
object main_namespace=main_module.attr(“uu dict_u”);
bp::exec(“导入ldap,ldif\n”
“l=ldap.initialize('ldaps://RIO-PC“)\n”,
主名称空间);
boost::python::objectldap=boost::python::extract(main_名称空间[“l”]);
ldap.attr(“OPT_TIMEOUT”);//此行将引发异常
}catch(boost::python::error_已_set const&){
PyErr_Print();
PyErr_Clear();
}
}
错误消息是

属性错误:SimpleLDAP对象没有属性“OPT\u TIMEOUT”

环境

编译程序:vc2008 增强版:1.55_0
OS:Wi764位(x64)

< p>您的C++代码试图提取<代码> L.OptItTimeOuts< /C> >,而不是<代码> LDAP.optJTimeOut<<代码>。试一试

    bp::object ldap_module = bp::import("ldap");
    ldap_module.attr("OPT_TIMEOUT");
    bp::object ldap_module = bp::import("ldap");
    ldap_module.attr("OPT_TIMEOUT");