From: David Abrahams (david.abrahams_at_[hidden])
Date: 2002-01-18 07:38:00
----- Original Message -----
Sent: Friday, January 18, 2002 5:50 AM
Subject: [boost] first experiences with boost.python
> I have the following in my wrapper "code":
> python::class_builder<Terrain> Terrain_class(this_module, "Terrain");
> Creating the constructor like so doesn't work:
> Terrain_class.def(python::constructor<char*, int, bool, float, float, int,
> Is it the char* that is bothering?
You didn't show us any error messages, but it seems likely that the char* is
giving you trouble. Try char const*; Python strings are immutable so I can't
let you write into one.
> (The docs made me think it does
> support char*.)
> Furthermore, as soon as I add any methods:
> Terrain_class.def(&Terrain::Render, "Render");
> it compiles fine, but when I try to import it in python:
> Traceback (most recent call last):
> File "./basic.py", line 5, in ?
> import demeterwrap ImportError: ./demeterwrap.so: undefined symbol:
> I am linking to libDemeter.a just fine, I believe, I have other classes
> also wrapped and they do not cause this problem. (As soon as I remove
> all Terrain_class.def statements, it works fine.)
> nm libDemeter.a gives me:
> 00002d98 T _._Q27Demeter7Terrain
> Can anyone shed light on this problem? Where should I be looking?
Keeping in mind that this is not a Boost.Python-specific problem and you
might be better off asking someone who's a guru w.r.t. your particular
platform and compiler...my guess is that you've left out the definition of
some virtual member function which causes the class' vtbl to come into
> Can one add members to the python class? (Is my terminology right? I've
> only added methods so far, I also want access to e.g. "float a;". This
> Last thing:
> WARNING: Python C API version mismatch for module demeterwrap:
> This Python has API version 1010, module demeterwrap has version 1007.
> This is because I am using python2.1 while boost.python only supports
> python2.0? (and 1.5.)
Boost.Python supports all Pythons from 1.5 -> 2.2. It's because you compiled
against a set of Python headers for a version later than the version of the
executable you're running.
> I can install python2.0 and work with that if
> necessary. I'm just curious whether it will support 2.1 soon, or maybe
> already... version of the Debian libboost-python-dev package I have:
> Version: 1.21.1-1
Oh, I don't know about that; I didn't release that package. I can only tell
you about the current boost release available at www.boost.org. That will
work with all available Pythons since 1.5.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk