2016-07-19 6 views
1

Verzeihen Sie mir, wenn diese Frage dumm ist, aber ich kann kein gutes Beispiel dafür finden, dass% ignore im Web verwendet wird. Ich versuche, ein Python-Wrapper für C++ Code zu generieren, den folgenden Befehl:SWIG:% ignore gibt weiter "Syntaxfehler in Eingabe (1)"

swig -python -c++ sample.i 

ich eine Schnittstellendatei wie die folgende haben:

%module sample 
%{ 
#include <file1.h> 
#include <file2.h> 
%} 

%ignore vprint 
%include <file1.h> 
%include <file2.h> 
%include <file3.h> 

Ich versuche, die vprint Funktion auszuschließen, Definiert in file1.h, weil es eine va_list als Parameter aufnimmt, die SWIG das Wrapping nicht unterstützt. Wenn ich die% ignore-Anweisung einfüge, erhalte ich die Fehlermeldung "Syntax error in input (1)". Ohne es bekomme ich den normalen Fehler, der mir sagt, dass ich die Funktion, die ich zu ignorieren versuche, nicht umbrechen kann. Warum könnte dieser Fehler auftreten? Danke im Voraus!

+1

Es ist wahrscheinlich etwas in Ihrem Header, z.B. ein '__declspec (dllexport)', das Sie SWIG akzeptieren können, indem Sie 'windows.i' oder etwas anderes hinzufügen. Denken Sie daran, dass SWIG Header nicht recursen kann. –

Antwort

4

Sie müssen sicherlich ein Semikolon nach dem %ignore:

%ignore vprint; 
+0

Vielen Dank! Ich bin etwas verwirrt, weil keine der anderen SWIG-Dateien, die ich bisher geschrieben habe, Semikolons benötigt haben. – GenericAlias

+2

@GenericAlias ​​SWIG kann mit den Semikolonanforderungen etwas inkonsistent sein. Gewöhnlich schaden aber die meisten nicht. – Flexo

Verwandte Themen