我看过一些使用以下命令创建 Python 模块的教程cpython
crate,但构建时仍然出现错误:
extern crate cpython;
use cpython::{PyObject, PyResult, Python, PyTuple, PyDict, ToPyObject, PythonObject};
fn add_two(py: Python, args: &PyTuple, _: Option<&PyDict>) -> PyResult<PyObject> {
match args.as_slice() {
[ref a_obj, ref b_obj] => {
let a = a_obj.extract::<i32>(py).unwrap();
let b = b_obj.extract::<i32>(py).unwrap();
let mut acc:i32 = 0;
for _ in 0..1000 {
acc += a + b;
}
Ok(acc.to_py_object(py).into_object())
},
_ => Ok(py.None())
}
}
py_module_initializer!(example, |py, module| {
try!(module.add(py, "add_two", py_fn!(add_two)));
Ok(())
});
I get:
error: macro undefined: 'py_module_initializer!'
我在哪里可以得到它?我正在使用 Rust 1.12。
UPD
- 需要添加
#[macro_use]
(如答案中所示)
- 对于其他错误 - 请参阅例子在这里 http://dgrunwald.github.io/rust-cpython/doc/cpython/macro.py_module_initializer!.html
您可能需要声明cpython
如下:
#[macro_use] extern crate cpython;
为了能够使用cpython
的宏。您可以咨询其文档中的示例 http://dgrunwald.github.io/rust-cpython/doc/cpython/macro.py_module_initializer!.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)