[geos-devel] Using SWIG to interface with GEOS, undefined symbols

strk strk at keybit.net
Mon Jul 12 11:39:01 EDT 2004


On Mon, Jul 12, 2004 at 09:10:53AM -0600, Sean Gillies wrote:
> On Jul 12, 2004, at 9:00 AM, strk wrote:
> 
> >On Mon, Jul 12, 2004 at 08:41:07AM -0600, Sean Gillies wrote:
> >>Hi all,
> >>
> >>Yesterday I began to try to use SWIG to generate a Python
> >>GEOS module using the CVS GEOS.  To start, I am only wrapping
> >>the classes in geom.h and precision.h.
> >
> >precision.h does not really contain 'basic' classes.
> >PrecisionModel class is in geom.h.
> >
> >>SWIG 1.3.20 generates wrapper code with only a few warnings
> >>and the module does build, resulting in geos.py and a very
> >>large _geos.so (I have statically linked against libgeos.a).
> >>
> >>On import of the geos module, an import error is raised:
> >>
> >>  ImportError:
> >>/home/sean/projects/PyGEOS/build/lib.linux-i686-2.3/_geos.so:
> >>  undefined symbol: _ZN4geos14PrecisionModel19maximumPreciseValueE
> >
> >Could you have built _geos.so and the geos.py in at different times ?
> >CVS api is changing , and you get those kind of errors for every simple
> >'const' addition.
> >
> >--strk;
> >
> 
> Thanks for the reply!  _geos.so and geos.py are synchronous, no problem
> there.  I was having this same issue with GEOS 1.0 and SWIG, so I am
> ruling out API changes.  It's either my lack of knowledge of C++, some
> undocumented SWIG issue or a combination of these.
> 
> Sean

I've checked the code. It seems a bug in both GEOS-1.0 and GEOS-CVS
PrecisionModel::maximumPreciseValue is never given a value.

geos::maximumPreciseValue is, but the header declare
geos::PrecisionModel::maximumPreciseValue, which is not.

I've fixed it, please try now.

--strk;

> 
> >>
> >>I think there is a problem not just with this symbol but with others.
> >>If I comment out the reference to the above in the GEOS wrapper and
> >>rebuild, I get an ImportError with a different undefined symbol.
> >>The symbols *are* in libgeos.a, and I'm certain that I've properly
> >>linked.
> >>I'm making sure to use g++ for the linker, avoiding one of the most
> >>common SWIG C++ module pitfalls.
> >>
> >>Anyone else taken a swing at a GEOS module with SWIG and run into
> >>this problem?
> >>
> >>Sean
> >>
> >>
> >>--
> >>Sean Gillies
> >>sgillies at frii dot com
> >>http://users.frii.com/sgillies
> >>
> >>_______________________________________________
> >>geos-devel mailing list
> >>geos-devel at geos.refractions.net
> >>http://geos.refractions.net/mailman/listinfo/geos-devel
> >



More information about the geos-devel mailing list