ImportError when trying to import own C++ module

Discussion in 'Python' started by Jan Drugowitsch, Mar 7, 2004.

  1. Hi everyone!

    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:

    Declaration of AClass
    typedef of PyObject containing AClass

    Including AClass.h
    Implementation of AClass

    Including AClass.h
    Python interface to access AClass

    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. links AClass.cpp and
    PyAClass.cpp, 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: ./ undefined symbol: _ZNK6AClass5valueEv, however, seems to contain that symbol:

    % nm | grep _ZNK6AClass5valueEv
    U _ZNK6AClass5valueEv

    Any ideas what can go wrong there?
    Any hints are appreciated


    P.S.: I'm sorry if this question has been asked a thousand times. It is very
    hard to search for in the archives as 'ImportError' is usually a bug in some
    software and no solution is given to resolve it.

    Version: GnuPG v1.2.4 (GNU/Linux)

    -----END PGP SIGNATURE-----
    Jan Drugowitsch, Mar 7, 2004
    1. Advertisements

  2. > % nm | grep _ZNK6AClass5valueEv
    > U _ZNK6AClass5valueEv

    From the nm manpage:

    "U" The symbol is undefined.


    Diez B. Roggisch
    Diez B. Roggisch, Mar 7, 2004
    1. Advertisements

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.