From: Kuba O. <ku...@ma...> - 2004-02-14 22:57:09
|
On Saturday 14 February 2004 03:40 pm, Danny Smith wrote: > --- Heiko Gerdau <> wrote: > > On Saturday 14 February 2004 00:41, Kuba Ober wrote: > > > > The relevant difference to the GNU Linux link process is the windows > > specific export/import process of symbols. Unfortunately to build Qt you > > have to use the linker switch --export-all-symbols. Without it the link > > time drops dramatically but the linker will also complain about > > unsresolved symbols. I actually do not understand why. In the source code > > every symbol is properly handled with dllexport/dllimport and it should > > work. > > Need some help. I see similar problems with other C++ dlls and am (slowly) > working g to work up patch and testcases. > What kind of symbols do not get marked as dllexport in QT? Typeinfo? > Vtables?. Do headers use pragma interface/pragma implementation? Attached is what examples/hello (from Qt/Win enterprise) are missing from Qt when libqt-mt.a (the export library) was obtained when linking w/o --export-all-symbols. I first linked it to (deficient) libqt-mt.a export library, then w/o mentioning that library at all so that you can see that in fact there's a lot more stuff missing when the import library is not linked with. Thus, the import library contains *some* needed symbols but not all of them. Hopefully the files will aid in your debugging. log.gz - with qt-mt and qtmain log.d.gz - same, mangled symbols log-noqt.gz - without linking to qt at all -- no qt-mt nor qtmain given to linker (so that you can see what *is* exported by Qt) log-noqt.m.gz - same, mangled symbols In order to compare the logs (say log and log-noqt), ungzip, sort and feed to diff -u. Works nicely. Cheers, Kuba |