2012-06-05 7 views
5

Smoke이 무엇인지 알 수 없습니다. 나는 연기가 C++ 코드 용 C 래퍼를 생성하고 생성 된 함수로 헤더 파일을 생성 할 것으로 기대하고있다.KDE의 Smoke를 사용하는 방법?

그러나 C++ 헤더에서 smokegen을 실행하면 작은 헤더가 생기고 Smoke 클래스와 <sourcename>_smoke_init() 함수로 포인터를 내 보냅니다.

내가 어떻게해야합니까?

+1

rtfm? 또는 매뉴얼이 없습니까? 다음에 소스 코드를 읽으십시오. – Abyx

답변

7

연기는 런타임 바인딩 생성기입니다. Smoke는이를 알고 있으면 gobject-introspection과 같은 종류입니다.

즉, 바인딩중인 코드에 대한 정보를 생성하고 라이브러리로 사용할 수있게합니다. 생성 된 라이브러리를 사용하려면 바인딩을 생성 한 코드에 대한 정보를 얻기 위해 Smoke API (C++ API)에 대한 코드를 작성하고 Smoke API를 사용하여 함수를 코드로 호출해야합니다 쌈. 당신은 당신이 연기 API는 여기에서 소개 어떤 까다로운 부품 http://techbase.kde.org/Development/Languages/Smoke/API_Documentation하지만됩니다

(여기 작성 Qt는 위젯 안녕하세요 세계 예제를) 바인딩하는 코드를 호출하기 위해 API를 사용하는 방법

페이지 http://techbase.kde.org/Development/Languages/Smoke의 예를 보여줍니다 내가 찾은 정보의 주요 소스는 smoke.h 헤더입니다.

연기에 기반한 Qt-python 바인딩을 작성하기 위해 Smoke에 대한 C 바인딩 (https://github.com/pankajp/pysmoke/blob/master/include/smokec.h)을 개발했습니다.이 바인딩은 이미 간단한 프로그램에서 작동합니다. C에서 Smoke를 사용하려는 경우 시작 지점으로 사용할 수 있습니다.

대신 C에서 하위 클래스를 만드는 것에 대해 신경 쓰지 않고 간단한 C++ 라이브러리를 C에 노출시키는 데 관심이 있다면 (어떤 방식 으로든)) 및 가상 또는 보호 된 메서드를 재정의하는 것입니다. 즉, 기존 코드를 확장하지 않고 그대로 사용하려는 경우 수동으로 바인딩을 작성하는 것이 좋습니다 (Smoke C++ API의 경우처럼 함수 포인터를 전달하여 C에서 가상 메소드를 구현하는 방법)