타사 패키지에서 제공되는 C 모듈에 파이썬 확장을 써야합니다. 파이썬/C의 API에 설명 된대로C 전역 변수를 파이썬 확장자로 내보내기
int mcnumipar = 13;
struct my_struct {char *name;
void *par;
enum instr_formal_types type;
char *val;};
struct my_struct mcinput[mcnumipar+1] = {
"E0", &mcipE0, instr_type_double, "4.94",
"dE", &mcipdE, instr_type_double, "0.24",
"dt", &mcipdt, instr_type_double, "6.4e-6",
"coh", &mcipcoh, instr_type_string, "Rb_liq_coh.sqw",
"inc", &mcipinc, instr_type_string, "Rb_liq_inc.sqw"
};
내가 PyMethodDef
메커니즘을 사용하여 내 파이썬 확장에 C-방법을 수출에 성공 :이 모듈은 모듈 수준에서 다음과 같은 변수의 일부 방법의 선언을 포함하고 선적 서류 비치. 불행히도 글로벌 변수에 실패했습니다.
이러한 변수를 내 파이썬 확장자 (mcnumipar & mcinput)로 내보내는 방법이 있습니까?
덕분에 많은
['PyObject_SetAttr'] (http://docs.python.org/2/c-api/object.html#PyObject_SetAttr)을 사용하면'object' 인스턴스의 속성을 설정할 수 있습니다 ('module 'objects), 그러나 정수는 파이썬 정수/long으로 포장해야합니다. 확장에 사용 된 변수가 아니라 파이썬 객체 만 변경되기 때문에 변수의 값을 설정할 때 문제가 발생합니다. Extension에서도 파이썬 int를 사용하는 것을 피할 수 있습니다 (값이 필요할 때 PyLong_AsLong 등을 사용하면됩니다). – Bakuriu