通过boostpython从python中提取常量值
python的代码(哪一个有效) 我想提取ldap.OPT_TIMEOUT的常量值,但是如何提取呢通过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__");
#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");