2017-12-12 18 views
0

.csharp로 .so 파일을 래핑하는 초기 단계에서 멈추었습니다. 그러나 클래스를 포함하는 제공된 h 파일 중 하나를 사용하여 래퍼를 만들려고하면 오류가 발생합니다. 나는 그것이 __attribute__ ((visibility ("default"))) 때문에 생각한다. 그러나 나는 그것을 이해할 수 없다. 누구도 전에 이것을 한 적이 있습니까?헤더 파일에 정의 된 단순 클래스를 래핑 할 수 없습니다.

나는 Test.h에 정의 된 클래스는 아래와 같이있다 :

class Test 
{ 
    public: 
    __attribute__ ((visibility ("default"))) Test(); 
    __attribute__ ((visibility ("default"))) ~Test(); 
}; 

난 당신이 또한 매우 간단 상상 woul 같은 인터페이스 파일을 정의했다. 내가 명령 swig -c++ -csharp -v test.i을 실행하면

%module Test 

%{ 
#include "Test.h" 
%} 


/* Let's just grab the original header file here */ 
%include "Test.h" 

나는 오류 메시지가 :

Test.h:4: Error: Syntax error in input(3). 
+0

은 Windows 또는 Linux입니까? – OznOg

+0

나는 리눅스를 실행 중이다 – Theyouthis

+0

swig는'__attribute__'을 이해합니까? 메일 링리스트는 당신이 swig 패스를 위해 그것을 매크로 아웃해야한다고 제안하는 것처럼 보입니다. –

답변

1

꿀꺽 꿀꺽 __attribute__에 대해 아무것도 알지 못한다. 다음과 같이 포장해야합니다.

%module Test 

%{ 
#include "Test.h" 
%} 

#define __attribute__(x) 

/* Let's just grab the original header file here */ 
%include "Test.h"