Ik werk meestal met Python, maar moet voor een project nu via een C++-library van een leverancier werken. Nu leek het me qua experimenteren praktisch om te kijken of ik wat wrappers kan genereren zodat ik in beginsel via Python met de onderliggende code kan werken. Helaas is het C++ van de universiteit al weer een tien jaar geleden, dus nu wil het niet helemaal lukken. Ik heb de volgende SWIG module code:
Als ik dit aan SWIG geef gaat de eerste stap goed, er wordt dan een .cxx-bestand gegenereerd met heel veel wrapper code. Daarin komen onder andere de drie includes voorbij. Echter, bij het compileren van die wrapper code krijg ik allerlei foutmeldingen als "config_wrap.cxx:2797: error: 'XXX_String' was not declared in this scope". Dit ondanks het feit dat die includes dus vlak boven die regel staan, en de XXX_String-klasse ook daadwerkelijk in die XXX_String.h gedefinieerd wordt.
Iemand een tip over wat ik over het hoofd zie?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| %module config %{ #include "Common/XXX_String.h" #include "Config/Config.h" #include "Config/ConfigDatabase.h" %} class XXX_String { XXX_String(const char *str, int length=0, bool copy=true); }; class ConfigDatabase { public: static ConfigDatabase* acquire(const XXX_String &strName); }; |
Als ik dit aan SWIG geef gaat de eerste stap goed, er wordt dan een .cxx-bestand gegenereerd met heel veel wrapper code. Daarin komen onder andere de drie includes voorbij. Echter, bij het compileren van die wrapper code krijg ik allerlei foutmeldingen als "config_wrap.cxx:2797: error: 'XXX_String' was not declared in this scope". Dit ondanks het feit dat die includes dus vlak boven die regel staan, en de XXX_String-klasse ook daadwerkelijk in die XXX_String.h gedefinieerd wordt.
Iemand een tip over wat ik over het hoofd zie?
Rustacean