2017-03-31 5 views
1

는 내가 CPP 응용 프로그램을 포장하기 위해 노력하고있어 및 소스 코드를 포함?사이 썬 상당

나는 어떤 성공

cdef extern from "headerfile.h" namespace "ns": 
    ctypedef cppClassDefinition<withT> Time 

을 시도했습니다. 이 단계에서 Cython이 불평하지는 않지만 setDefaultTime(1.0) 함수를 사용하려고하면 컴파일 오류가 발생합니다. 오류 상태는 "

. 유형 '더블' '시간'. 그러나 CPP 코드에서이 보인다에 작동하는 벌금을 할당 할 수 없습니다 나는 또한

cdef extern from "headerfile.h" namespace "ns": 
    cdef cppclass Time: 
     pass 

그 또한 실패했습니다. 어떤 시도했습니다 제안? 사이 썬를 사용하여이 가능합니까?이 질문에 제안으로,이 맥락에서 using ... = ...부터 사용

ctypedef cppClassDefinition[withT] Time 

를 사용할 수 있어야합니다

답변

1

하는 것은 동일합니다 typedef. (대괄호에 대한 변경은 질문에있는 코드와 비교해보십시오.)

나는이 문제가 대신 시도한 시도가 setDefaultTime(1.0) 일 것이라고 생각합니다. Cython은 doubleTime으로 변환 될 수 있다는 것을 알 수 없으며 암시 적 C++ 변환에 대해 알릴 방법이 없습니다.

이번 라운드 가장 쉬운 방법은 (그대로 당신은 C++ 서명을 남길 수 있습니다) 함수 서명이

void setDefaultTime(double x) 

이다 사이 썬을 알려주는 것이다. 이것은 Cython을 만족시킬 것이고, 그러면 생성되는 C++ 코드는 double이 암시 적으로 Time으로 변환 될 수 있습니다. (질문에서 알 수 있듯이)

+0

고마워요! 그게 효과가 있었어! – kdheepak