我们正在尝试在我们的 C++ 代码中嵌入几个 Python 过程,但它失败并出现错误
TypeError: No to_python (by_value) converter found for C++ type: boost::python::detail::kwds_proxy
我们诚实地研究了我们设法通过网络找到的所有示例(this和this ),但是对于将****kwargs** 变量从 C++ 传递到 Python,我们仍然没有任何明确的解决方案。这种失败似乎非常罕见。
我们试图调用的 Python 函数接收一个字符串值和一个字典:
from ipalib import api
user_kw = dict(givenname=u'Test', sn=u'User')
api.Command.user_add.(u'Pythonist', **user_kw)
这是它的 C++ 实现:
//Importing modules
bp::import("__main__");
ipalib = bp::import("ipalib");
ipalib_namespace = ipalib.attr("__dict__");
api = ipalib.attr("api");
... //Starting Python environment
//Construct args
std::string name = "Pythonist";
bp::dict new_user;
new_user["givenname"] = "Test";
new_user["sn"] = "User";
//Calling the function
bp::object user_add_wrapper = api.attr("Command").attr("user_add");
user_add_wrapper(name, new_user);
最后一行 Boost 抛出异常。我们做错了什么?谢谢你。