ich auf Anbieter-Header swig zu laufen bin versucht swig so brauche ich nicht, die Umsetzung in einer separaten Header-Datei unterwie auslassen Vorwärtsdeklaration
swig -go -cgo -intgosize 64 -module qt -o $WORK/qt/_obj/qt_wrap.cxx -outdir $WORK/qt/_obj/ \
-I$HOME/Qt5.9.1/5.9.1/gcc_64/include -I$HOME/Qt5.9.1/5.9.1/gcc_64/include/QtOpenGL \
-I$HOME/Qt5.9.1/5.9.1/gcc_64/include/QtWidgets -I$HOME/Qt5.9.1/5.9.1/gcc_64 \
/include/QtGui -I$HOME/Qt5.9.1/5.9.1/gcc_64/include/QtCore -c++ qt.swigcxx
Ich erhalte den Fehler neu zu definieren, während go build
$HOME/Qt5.9.1/5.9.1/gcc_64/include/QtWidgets/qapplication.h:57: Error: Syntax error in input(1).
Nach Inspektion
qapplication.h:57
#include <QtWidgets/qtwidgetsglobal.h>
#include <QtCore/qcoreapplication.h>
#include <QtGui/qwindowdefs.h>
#include <QtCore/qpoint.h>
#include <QtCore/qsize.h>
#include <QtGui/qcursor.h>
#ifdef QT_INCLUDE_COMPAT
# include <QtWidgets/qdesktopwidget.h>
#endif
#include <QtGui/qguiapplication.h>
QT_BEGIN_NAMESPACE
class QDesktopWidget;
Offensichtlich scheitern auf der Forward-Deklaration.
Unten ist qt.swigcxx:
// See swig.org for more inteface options,
// e.g. map std::string to Go string
%module qt
%{
#include <QPushButton>
#include <QApplication>
%}
%ignore "";
%include <qapplication.h>
%include <qpushbutton.h>
Wie kann ich damit swig ändern lässt die Vorwärts-Erklärung?
danke. Ich bevorzuge die zweite Option und jetzt mit Typmap stecken – user642318
Der Grund, warum Sie den Fehler erhalten, ist entweder aufgrund SWIG kann nicht Headerdateien recurse. Wenn Sie mit Schnittstellen extrem streng sind (Header-only Zeug zu vermeiden) und Header in der Reihenfolge, die sie benötigt werden, enthalten, SWIG kann verwendet werden, um ziemlich große Projekte zu wickeln. Ich arbeite an einem Projekt mit fast 40.000 generierten Codezeilen. Die SWIG-Teile bauen viel schneller als das QT-Zeug –