From: William S F. <ws...@fu...> - 2006-11-03 21:51:36
|
Laurent Dufréchou wrote: > Hello, > I'm trying to use swig to wrap a big C++ librarie. My target language is > (for the moment) python. > From now, I've managed to wrap some classes without too much problem. > exactely two :) let's say class A and class B > My library is compiled (on windows, my current platform for the moment) > as a dll. Let's say libDLL.dll > > So I want to ask you first some methodology questions... > > ******************************************************************************* > Wrapping methodology questions > ******************************************************************************* > My first question is: > assuming I've done classA.i and classB.i, I've also done a swig.i that's is: > > /* File : swig_wrapper.i */ > %module libDLL > %include "std_string.i" > %include "typemaps.i" > > %apply std::string {string}; > %apply unsigned int {u32}; > > %include "classA.i" > %include "classB.i" > > and last I invoke swig on swig.i. > Is this the good way to do? (I've tied to invoke swig on classA.i and > classB.i alone but don't works) > > Second question: > > here is my classA.i: > /* File : CLASSA.i */ > %{ > #include "CLASSA.h" > %} > > class PCI165 > { > public : > // Constructor > CLASSA (); > > // Destructor : close the pci card > ~CLASSA (); > > //Lot of methods > classA... > classA... > classA... > classA... > > %apply bool *OUTPUT { bool& testOK}; > void SelfTestClassA (bool &testOK); > } > > Can I do the same but without explicitly write all easily wrappable methods? > something like: > /* File : CLASSA.i */ > %{ > #include "CLASSA.h" > %} > > /* Let's just grab the original header file here */ > %include "PCI165.h" > > but I don't know then where to put %apply bool *OUTPUT { bool& testOK}... > Typemaps must go before SWIG parses the type to which is applies, so put it somewhere before your %include "PCIl65.h". See Typemaps.html. > > ******************************************************************************* > some last specific problems ... :) > ******************************************************************************* > I've got classC (no this wil not got to Z ;) ) > class C > { > static method1(); > static method2(); > static method3(); > } > > no constructor... invoking swig says: > .\interface\SWIG_wrap.cxx(4263) : error C2512: 'ClassC' : aucun > constructeur par défaut approprié disponible > -> no default contructor > > > > > That's true there si no default constructor as all methods are > statics... Any idea how I can solve this? > > thanks a lot for all your help! > The above is not valid C++. Correct it and it should work. William |