2010-05-05 2 views
0

Java 프로젝트에서 일부 C 라이브러리를 사용하고 있습니다. 몇 년 전에는 (항상 그렇듯이) 몇 년 전에 은퇴 한 다른 개발자가 우리를 위해 모든 래퍼를 만들었습니다. 래퍼는 swig에 의해 생성되었지만 인터페이스 파일은 이제 손실됩니다.일부 헤더 파일의 모든 유형에 대한 래퍼 생성을위한 swig 인터페이스 파일을 정의하십시오.

라이브러리와 그것을위한 래퍼의 기본 개념은 다음입니다 : 일부 복잡한 객체에 대한 포인터를 반환

  • 하나의 기능. 그리고 그 함수에 대한 래퍼가 있습니다.
  • 복잡한 개체는 수십 개의 노드 종류와 형식 (C 구조체)을 나타내는 트리 형태의 구조입니다. 모든 유형의 모든 필드에 대해 수백 개의 래퍼가 있으며 모두를 사용하려고합니다.

라이브러리가 얼마 전에 업데이트되었지만 지금은 아직 알지 못했지만 사용하고 싶은 몇 가지 새로운 데이터가 있습니다. 이 데이터는 우리가 호출하는 함수에 의해 생성 된 객체에서 간접적으로 포함되거나 참조되는 객체 중 일부에 포함됩니다 (일부 새 필드와 유형이 추가되었습니다).

나는 손으로 래퍼를 변경해서는 안되며 인터페이스를 수정해야한다는 것을 알고 있지만 이미 작성 했으므로 빠져있다. 지금은 추가/변경된 몇 가지 유형과 이전 래퍼에 래퍼를 생성하기를 원하지만 나중에 "무엇을 어떻게 래핑해야하는지"를 정의하는 인터페이스 파일 생성을 시작하고 싶습니다.

우리에게 필요한 모든 정의는 단일 헤더 파일에 정의되어 있습니다. 이 헤더의 모든 유형에 대해 래퍼를 생성하도록 swig에 지시 할 수 있습니까? 그렇다면 어떻게 인터페이스 파일을 작성할 수 있습니까? swig tutorial에서

답변

2

: 그것이 나오는 것에 따라

, 특별한 인터페이스 파일을 쓸 필요가 없습니다 항상 입니다. 헤더 파일이있는 경우 은 종종 SWIG 인터페이스 에 직접 포함시킬 수 있습니다. 예 :

%module example 
%{ 
/* Includes the header in the wrapper code */ 
#include "header.h" 
%} 

/* Parse the header file to generate wrappers */ 
%include "header.h"