문제

C (C ++가 아님)로 작성된 작은 라이브러리와 래퍼가 확장을 통해 PHP에서 사용할 수 있도록 작성했습니다. 나는 몇 가지 튜토리얼을 읽었습니다 적절한 PHP 연장기 작성 그리고 그것은 어렵지 않은 것처럼 보이지만 라이브러리 외에 확장을 유지하는 번거 로움을 원하지 않습니다.

나는 그것을 읽었다 통음 Zend PHP 5와 호환되는 건물 확장을 지원합니다. 그러나 SWIG 문서에 따르면 지원은 베타 인 것 같습니다.

내 도서관은 C의 사용법의 메타 예로서 매우 일반적입니다.

int main(void)
{
    struct libfoo *foo;

    char **tmp;

    foo = foo_init();
    if (foo == NULL) {
        fprintf(stderr, "Could not allocate foo\n");
        return 1;
     }

     tmp = foo_parse(foo, "/foo/foo.txt");
     ......
     foo_finit(foo);
}

누구든지 SWIG를 사용하여 라이브러리를 확장하여 이렇게 간단하게 공유 할 경험이 있습니까? CP를 사용하여 PHP 확장을 빌드의 선택적 부분으로 만들기 위해 C로 작성된 무료/오픈 소스 프로젝트를 아는 사람이 있습니까?

미리 감사드립니다. 피드백을 받기를 바랍니다. 긍정적이라면, 나는 정말로 Swig를 알기 위해 시간을 할애 할 것입니다. 그렇지 않다면, 나는 단지 확장을 손으로 만드는 데 시간을 보낼 것입니다.

도움이 되었습니까?

해결책

몇 년 전에 저는 C API를 기반으로 프로토 타입 파이썬 모듈을 제작하는 프로젝트에 참여했습니다. 우리는 프로젝트의 어떤 사람들이 Python C API를 알지 못했기 때문에 SWIG를 사용하기로 결정했습니다. 원칙적으로 일부 자동 생성 기능을 갖는 아이디어는 실제로 큰 소리로 들렸습니다. 실제로 우리의 요구에 맞게 SWIG 생성 코드를 조정하고 사용자 정의해야했기 때문에 더 많은 작업이 발생했습니다.

PHP 관점에서 PHP C 확장을 유지하고 SWIG와 함께 진행하는 "간단한"C 함수의 경우 도움이 될 것이라고 믿지 않습니다. 수작업으로 코드를 작성하는 것이 더 쉬울 것입니다. 당신이 얻거나 읽을 가치가있을 수 있습니다 PHP 확장 및 임베딩 Sara Golemon에 의해.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top