albatroz Wrote: > Eldar Insafutdinov wrote: > > > Qian Xu Wrote: > > > >> Hi All, > >> > >> I have almost built the first demo, but ... > >> The components I have are as follows: > >> 1. QtK SDK (LGPL edition) 4.5.3 > >> 2. the latest svn version of QtD (trunk-r309.zip) > >> 3. DMD 1.050 > >> 4. Tango (current from trunk) > >> 5. Platform: openSUSE 11.1. > >> 6. cmake 2.6 > >> > >> After QtD was built successfully, I try to compile the demo > >> (http://www.dsource.org/projects/qtd/wiki/MacCaseStudy) > >> > >> I got many linking errors: > >> > [code]../../../../build_dir/build/lib/libqtdgui.a(QPrintDialog_shell.cpp.o): > >> In function `qtd_QPrintDialog_setOption_PrintDialogOption_bool': > >> QPrintDialog_shell.cpp:(.text+0x20b): undefined reference to > >> `QPrintDialog::setOption(QAbstractPrintDialog::PrintDialogOption, bool)' > >> ../../../../build_dir/build/lib/libqtdgui.a(QPrintDialog_shell.cpp.o): In > >> function `qtd_QPrintDialog_options': > >> QPrintDialog_shell.cpp:(.text+0x22b): undefined reference to > >> `QPrintDialog::options() const'[/code] > >> > >> There are many undefined references. I checked the source and the '.a' > >> files. These functions are defined correctly. > >> > >> Have I still forget something by linking the demo or building the > >> library? > >> > >> Any hint is welcome > > > > Hi! > > > > Undefined symbols that are missing are from Qt libs. I'd recommend to do > > 'make install' after you build QtD (don't forget to specify > > CMAKE_INSTALL_PREFIX option in cmake prior to build to point to the > > directory where you have your dmd toolchain) and then look into the build > > scripts of the examples which typically have a name build.sh. They contain > > the command line with all necessary libraries to link, typically: > > > > -L-lqtdgui -L-lqtdcore -L-lQtCore -L-lQtGui > > > > I saw you made the reference to this link > > (http://www.dsource.org/projects/qtd/wiki/MacCaseStudy which contains this > > command line option, but still I don't understand why you get undefined > > symbols like QPrintDialog::options() const which belongs to libQtGui. > > Hello, > > I decided not to install it globally, first export to ldd the path to your > QT lib folder > > export LIBRARY_PATH=/usr/lib64/qt4/ > > and build the examples using the complete path of libQtGui > > -L/usr/lib64/qt4/libQtGui.so -L-lqtdgui -L-lqtdcore -L-lQtCore -L-lQtGui > > This allows me to have several folders with different versions.
I am considering two possible reasons: 1. I linked to a wrong Qt-library 2. The QtD is not compatible with Qt 4.5.3 (I Saw the build package uses Qt 4.5.2, maybe those undefined references comes from Qt 4.5.3) I have also downloaded a pre-compiled QtD library from code.google.com, it works. I can compile Hello world programs. However, this version does not contain all classes as the library I was trying to build. If later I find that some important classes are missing, it will be a big problem for choosing QtD.