2011-08-17 3 views
1

나는이처럼 보이는 C-기능이 있습니다랩 C 코드를 갖는 문제

int parse_commandline_options1 (cl1_option_t co[], char ***res, 
           char ***last_vals, int argc, char *argv[]); 

내가 사이 썬를 사용하여 포장 할,하지만 내가 가진 문제입니다.

cdef extern from "pclo1.h": 
    ctypedef struct cl1_option_t: 
     pass 

    int parse_commandline_options1(cl1_option_t, char***, char***, int, char[]*) 


cdef class Options: 

    cdef readonly cl1_option_t clo 

    cdef cl1_option_t Get(self): 
     return self.clo 

    property short_name: 
     def __get__(self): 
      return self.clo.short_name 

    property long_name: 
     def __get__(self): 
      return self.clo.long_name 

def ParseCommandLine(char ***a, char ***b, char *c[]): 
    o = Options() 
    parse_commandline_options1(o.Get(), a, b, 0, c) 
    return o         #^error here 

사이 썬은 Cannot assign type 'char **' to 'char(*)[]'는하지만이 오류가 의미 모르는 저에게 말한다 : 이것은 내 사이 썬 코드입니다. 내가 뭘 잘못하고 있는지 말해 줄 수 있니? 나는 C로 많은 경험을 가지고 있지 않다. 불행히도 .. 고마워! 내가 전문가는 오전 없지만 당신이 배열에 대한 포인터를 분석하는 것처럼

답변

1

가 먼저 눈에 보이는, 즉 포인터의 배열을 기대하고있다

int parse_commandline_options1(cl1_option_t, char***, char***, int, char[]*) 

다른 명령은 있지만 :

def ParseCommandLine(char ***a, char ***b, char *c[]) 

유형이 다르므로 그 기능에 문제가있는 이유입니다.

수정 방법의 기능

편집 한이 일치하도록. 나는 변화를 말할 것이다 : 이것은 당신의 즉시 문제를 해결해야

int parse_commandline_options1(cl1_option_t, char***, char***, int, char[]*) 

int parse_commandline_options1(cl1_option_t, char***, char***, int, char* []) 

로하지만 실제로 포인터의 배열을 기대 않는 경우 (즉, 기능을 업데이트해야합니다 경우 코드 내 해석 맞다).


희망이 있으면 도움이됩니다. 나는 더 똑똑한 사람들이 진정한 이유에 대해 논평 할 것이라고 확신합니다! :)