[PYTHON] Cython 모듈에서 #defined C 값을 Python에 어떻게 노출시킬 수 있습니까?
PYTHONCython 모듈에서 #defined C 값을 Python에 어떻게 노출시킬 수 있습니까?
정수 상수 (ACTIVE_TAG 등)를 여기에 정의하고 싶습니다.
//island management, m_activationState1
#define ACTIVE_TAG 1
#define ISLAND_SLEEPING 2
#define WANTS_DEACTIVATION 3
#define DISABLE_DEACTIVATION 4
#define DISABLE_SIMULATION 5
Cython에서 정의한 모듈의 일반 속성으로 사용할 수 있으므로 Python 응용 프로그램 코드에서 액세스 할 수 있습니다. (파이썬 응용 프로그램 코드에서 파이썬 응용 프로그램 코드를 액세스 할 수 있습니다.
Cdef를 정수 또는 enum으로 정의하는 방법을 살펴 보았습니다.하지만이 두 방법 모두 실제로 값을 Cython 모듈의 특성에 바인딩하지 않습니다. 다른 옵션은 무엇입니까?
해결법
-
==============================
1.다음과 같은 한 가지 방법이 있습니다. 겉으로보기에는 지루하지만, 주어진 .h 파일에 대해 입력으로 자동 실행될 수 있습니다.
다음과 같은 한 가지 방법이 있습니다. 겉으로보기에는 지루하지만, 주어진 .h 파일에 대해 입력으로 자동 실행될 수 있습니다.
1 단계. 원하는 모든 상수를 파일에 넣으십시오. 예를 들어, #defines가 있지만 앞에 밑줄이있는 bulletdefs.h라고 말하십시오.
#define _ACTIVE_TAG 1 #define _ISLAND_SLEEPING 2 #define _WANTS_DEACTIVATION 3 #define _DISABLE_DEACTIVATION 4 #define _DISABLE_SIMULATION 5
2 단계. 모듈의 pyx 파일에 섹션을 삽입합니다 (예 : bullet.pyx :
cdef extern from "bulletdefs.h": cdef int _ACTIVE_TAG cdef int _ISLAND_SLEEPING cdef int _WANTS_DEACTIVATION cdef int _DISABLE_DEACTIVATION cdef int _DISABLE_SIMULATION ACTIVE_TAG = _ACTIVE_TAG ISLAND_SLEEPING = _ISLAND_SLEEPING WANTS_DEACTIVATION = _WANTS_DEACTIVATION DISABLE_DEACTIVATION = _DISABLE_DEACTIVATION DISABLE_SIMULATION = _DISABLE_SIMULATION
그런 다음 모듈을 컴파일 할 때 원하는 효과를 얻으십시오.
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24) [GCC 4.5.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import bullet >>> bullet.ACTIVE_TAG 1 >>> bullet.DISABLE_SIMULATION 5 >>>
from https://stackoverflow.com/questions/5697479/how-can-a-defined-c-value-be-exposed-to-python-in-a-cython-module by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] hdf5 파일 결합 (0) | 2018.10.31 |
---|---|
[PYTHON] 터미널에서 파이썬 스크립트를 실행하면 아무것도 인쇄되지 않거나 나타나지 않습니다 - 왜? (0) | 2018.10.31 |
[PYTHON] 인터프리터를 설치하지 않고 Perl / Python / Ruby 스크립트를 어떻게 배포 할 수 있습니까? (0) | 2018.10.31 |
[PYTHON] 타입 문제없이 파이썬리스트를 서브 클래스 화하는 방법? (0) | 2018.10.31 |
[PYTHON] CherryPy (데몬) 배포 (0) | 2018.10.31 |