[PyKDE] PyQt - undefined symbol

Erik Dahlgren ebdahlgr at unity.ncsu.edu
Sat Apr 19 16:42:00 BST 2003


Both my python and qt versions are from RH9. When running nm on 
libqtcmodule.so I get

         U PyUnicode_Type
         U PyUnicodeUCS2_FromUnicode
002e3190 t _Z18QStringToPyUnicodeP7QString

In libpython2.2.a there is 'U PyUnicodeUCS2_FromUnicode' so they seem to 
agree. There are no symbols in my libqt-mt.so in my qt lib dir. There is no 
such file in the site-packages dir.

I guess it is time for that goat then...

Erik


On Saturday 19 April 2003 01:38 am, Jim Bublitz wrote:
> On 19-Apr-03 Erik Dahlgren wrote:
> > sip -V yields
> >
> > 3.5 (build 57)
> >
> > I am compiling PyQt from PyQt-x11-gpl-3.5. I looked at the dates
> > in site-pakages and as far as I could tell all the ones related
> > to qt had todays date (the 18th). When running ldd on
> > libqtcmodule.so there is no reference to  libpython of any kind.
> > For libsip.so.9 it says not found. Is this a problem?
>
> My mistake - libpython isn't linked because the interpreter itself
> provides those symbols (Duh). It sounds like everything is OK with
> sip and PyQt.
>
> > How do I solve it if so?
>
> I found this comment in /usr/lib/python2.2/include/unicodeobject.h:
>
> /* --- UCS-2/UCS-4 Name Mangling ------------------ */
>
> /* Unicode API names are mangled to assure that UCS-2 and UCS-4
> builds produce different external names and thus ***cause import
> errors*** in case Python interpreters and extensions with mixed
> compiled in Unicode width assumptions are combined. */
>
> (my  ***emphasis***)
>
> That kind of problem won't show up until you try to load something
> - won't generate a compile or link error.
>
> I don't believe PyQt makes any assumptions about UCS-2 and UCS-4
> (and I couldn't tell you the difference anyway). From what you've
> said, though, you have a mixed RH8/9 system. My guess from the
> comment above is that the version of Python you have is from RH8
> and Qt itself (not PyQt) is from RH9 and perhaps RH changed from
> UCS2 to UCS4 or vice versa between 8 and 9, or soemthing like that.
> (Wild guess).
>
> What you can try is to run nm on libqt-mt.so, libqtcmodule.so and
> libpython.a and see if any *UCS* stuff disagrees among the three.
> For example:
>
> nm /usr/lib/python2.2/site-packages/libqtcmodule.so | grep PyUnicode
>
> You can also add a " | less" on the end for paging.
>
> In this case you really do want to look at libpython also. You'll
> get a bunch of "PyUnicodeUCS2..." symbols (or maybe a 4 instead of
> a 2 in one case - that's the problem I'd expect).
>
> Assuming it's an RH version problem, the solution might be to sync
> Python and Qt RH versions (eg d/l Python/Python devel for RH9 and
> install those). You might also need to recompile sip and PyQt after
> doing that, but I'd try it without recompiling if you can (I think
> rpm -Uvh should preserve the files in site-packages, but I'm not
> sure). It could also be an RH9 bug, but I expect we would have
> heard about it already if that's the case. I've tested
> sip/PyQt/PyKDE on RH8 and they build fine. I have RH9, but not
> installed - I'll try to get to that and test it. You could also
> recompile Python on your system - I'm not sure where the UCS choice
> comes in, and it might be a problem specific to your system and not
> RH, but I think that's the least likely.
>
> If this doesn't work, you can always try sacrificing a goat or two.
>
>
> Jim

-- 
Erik Dahlgren
ebdahlgr at unity.ncsu.edu

"Programming today is a race between software engineers 
striving to build bigger and better idiot-proof programs, 
and the Universe trying to produce bigger and better idiots. 
So far, the Universe is winning."




More information about the PyQt mailing list