现在我不能编译代码了。它一直在告诉我
libs/boost-1.5.8/boost/python/module_init.hpp:79:8: error: expected unqualified-id before string constant extern "C" __attribute__ ((__visibility__("default"))) _BOOST_PYTHON_MODULE_INIT(name) libs/boost-1.5.8/boost/python/module.hpp:11:30: note: in expansion of macro ‘BOOST_PYTHON_MODULE_INIT’ # define BOOST_PYTHON_MODULE BOOST_PYTHON_MODULE_INIT
这是我用来加载脚本的函数
void PythonManager::LoadModules()
{
BOOST_PYTHON_MODULE(PyManager)
{
boost::python::class_<PyEditor>("PyEditor", boost::python::no_init)
.def("GetText",&PyEditor::GetText)
.def("GetText",&PyEditor::SetText)
.def("AddCallable",&PyEditor::AddCallable);
}
PyImport_AppendInittab("PyManager");
Py_Initialize();
boost::python::object pyManagerModule((handle<>(PyImport_ImportModule("PyManager"))));
main_namespace["PyManager"] = pyManagerModule;
scope(cpp_module).attr("editor") = boost::python::ptr(new PyEditor());
//Load the .py files
}
我已经阅读了几乎所有的资源,但我无法理解我的错误
^{} 宏是用于声明Pythonmodule initialization function的语法糖。编译器抱怨有人试图定义一个嵌套的命名函数。将
BOOST_PYTHON_MODULE
块移动到允许定义命名函数的范围(如全局命名空间)中,应该可以解决问题:下面是一个完整的示例demonstrating在嵌入时导入静态链接的Python模块:
^{pr2}$上面的程序运行到完全没有错误,并且在注释中注释了等效的Python代码。在
相关问题 更多 >
编程相关推荐