ImportError when trying to import own C++ module

Jan Drugowitsch jdrugo at gmx.at
Sun Mar 7 23:29:07 CET 2004


On Sunday 07 March 2004 21:56, Jan Drugowitsch wrote:
> I am trying to access a C++ class which is wrapped in a Python object from
> another C++ class which is also wrapped in a Python object. I have used the
> following file structure:
>
> AClass.h:
> Declaration of AClass
> typedef of PyObject containing AClass
>
> AClass.cpp:
> Including AClass.h
> Implementation of AClass
>
> PyAClass.cpp:
> Including AClass.h
> Python interface to access AClass
>
> BClass.cpp:
> Including AClass.h
> Declaration of BClass
> Implementation of BClass
> Python interface to access BClass
>
> AClass has the methods
> unsigned int value() const;  // reading private value
> void setValue(const unsiged int);  // setting private value
>
> BClass has the method
> unsigned int value(const AClass* aclass) const; // returning
> aclass->value()
>
> (remember: just a proof-of-concept)
>
> I'm using DistUtils to compile the libraries. AClass.so links AClass.cpp
> and PyAClass.cpp, BClass.so links BClass.cpp and AClass.cpp.
> Using AClass in Python works without problems, importing BClass, however,
>
> gives the following error:
> >>> import BClass
>
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
> ImportError: ./BClass.so: undefined symbol: _ZNK6AClass5valueEv
>
> BClass.so, however, seems to contain that symbol:
>
> % nm BClass.so | grep _ZNK6AClass5valueEv
>          U _ZNK6AClass5valueEv

Oops, I must have missed the 'U' there. Nevermind, 
after adding library_dirs=["."] and libraries=["AClass"] to the BClass 
Extention, everything works.

Cheers,
Jan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: signature
URL: <http://mail.python.org/pipermail/python-list/attachments/20040307/11abffd8/attachment.pgp>


More information about the Python-list mailing list