2012-01-31 6 views
1

SWIG을 사용하여 포장하려는 타사 .lib 파일과 하나의 .h 파일을 받았습니다. 다른 언어로 사용할 수 있습니다. 모든 SWIG의 예제는 C \ C++ 소스 코드와 함께 제공되지만, 제 경우에는 소스 코드가 없습니다.
래퍼를 만들려면 어떻게해야합니까?SWIG 사전 컴파일 라이브러리

답변

2

SWIG 예제에는 독자가 컴파일하고 시도 할 수 있도록하는 정의 (소스 코드)가 포함되어 있지만 인터페이스 파일 (.i)의 모든 예에는 선언 (헤더 파일에서 일반적으로 볼 수있는 내용), 모두 SWIG가 래퍼를 생성해야합니다.

인터페이스 파일을 작성하는 일반적인 방법은 다음과 같이 간다 : 당신의 헤더 파일이 간단하고 당신이 그것에 모든 정의를 내보낼

/* File : example.i */ 
%module example 
%{ 
/* This block will end up verbatim in the generated wrapper - include your header 
* so that the wrapper will have access to its definitions 
*/ 
#include "your_header.h" 
%} 

/* The definitions in this part are used to generate the wrapper. 
* Copy the definitions you want to export to the other language from the header 
* and put them here 
*/ 

extern double variable_from_header; 
extern int function_from_header(int); 

경우, 인터페이스 파일과 멀리 될 수있는 위치 다음과 같습니다

/* File : example.i */ 
%module example 
%{ 
#include "your_header.h" 
%} 

%include "your_header.h" 

공지 사항은 인터페이스 정의 파일의 일부인 것처럼 꿀꺽 꿀꺽가 포함 된 파일을 구문 분석 지시 %include 지시어. 이 방법을 설명하는 설명서의 Section 5.7도 참조하십시오.

일단 래퍼가 있으면 예제의 소스 코드에서 만든 개체를 링크 할 때와 마찬가지로 lib를 링크합니다.

+0

헤더 파일이 없더라도 관련된 함수의 선언을 알고있는 경우 첫 번째 방법을 사용할 수 있습니다 – Flexo