나는 cpython
상자를 사용하여 파이썬 모듈을 만들 수있는 몇 가지 자습서를 볼 수 있지만 만들 때 여전히 오류가했습니다다른 크레이트에 정의 된 매크로는 어떻게 사용합니까?
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(())
});
내가 얻을 :
error: macro undefined: 'py_module_initializer!'
내가 그것을 어디에서받을 수 있나요? 녹 1.12를 사용하고 있습니다.
UPD
- 필요 기타 오류의 경우 (답변에서와 같이)
#[macro_use]
- 를 추가 - examples here
scan!()을 사용하여 u8을 읽을 때 [매크로가 정의되지 않음] 가능한 복제본 (http://stackoverflow.com/questions/38396104/macro-undefined-when-reading-u8-using-scan) – mcarton