Qt-interest Archive, March 2007
Static QMYSQL driver can't link
Message 1 in thread
I've written a Qt/X11 4.2.3 application that uses the QMYSQL driver, and
it works fine if I am using a shared version of Qt, but when I try to
use a static version of Qt, I get linker errors. I've added the
following to my project file to try to make it work:
QTPLUGIN += qsqlmysql
LIBS += -lqsqlmysql
LIBS += -lmysqlclient
Of course, I also have "QT += sql" at the top of my project file.
And in my main.cpp:
#ifndef QT_SHARED
#include <QtPlugin>
Q_IMPORT_PLUGIN(qsqlmysql)
#endif
But I can't link because my linker can't seem to find the
QSqlDriverPlugin class (errors below). Any idea why? My goal is to ship
my executable as a single, statically-linked binary with as few .so file
dependencies as possible. Again, my app works fine with the shared
version of Qt, but not static.
Here are the errors:
/usr/local/Trolltech/Qt-4.2.3-static/plugins/sqldrivers//libqsqlmysql.a(main.o)(.text+0x1b):
In function `QMYSQLDriverPlugin::QMYSQLDriverPlugin()':
: undefined reference to `QSqlDriverPlugin::QSqlDriverPlugin(QObject*)'
/usr/local/Trolltech/Qt-4.2.3-static/plugins/sqldrivers//libqsqlmysql.a(main.o)(.text+0x5b):
In function `QMYSQLDriverPlugin::QMYSQLDriverPlugin()':
: undefined reference to `QSqlDriverPlugin::QSqlDriverPlugin(QObject*)'
/usr/local/Trolltech/Qt-4.2.3-static/plugins/sqldrivers//libqsqlmysql.a(main.o)(.gnu.linkonce.d._ZTV18QMYSQLDriverPlugin+0x8):
undefined reference to `QSqlDriverPlugin::metaObject() const'
/usr/local/Trolltech/Qt-4.2.3-static/plugins/sqldrivers//libqsqlmysql.a(main.o)(.gnu.linkonce.d._ZTV18QMYSQLDriverPlugin+0xc):
undefined reference to `QSqlDriverPlugin::qt_metacast(char const*)'
/usr/local/Trolltech/Qt-4.2.3-static/plugins/sqldrivers//libqsqlmysql.a(main.o)(.gnu.linkonce.d._ZTV18QMYSQLDriverPlugin+0x10):
undefined reference to `QSqlDriverPlugin::qt_metacall(QMetaObject::Call,
int, void**)'
/usr/local/Trolltech/Qt-4.2.3-static/plugins/sqldrivers//libqsqlmysql.a(main.o)(.gnu.linkonce.t._ZN18QMYSQLDriverPluginD1Ev+0x2f):
In function `QMYSQLDriverPlugin::~QMYSQLDriverPlugin()':
: undefined reference to `QSqlDriverPlugin::~QSqlDriverPlugin()'
/usr/local/Trolltech/Qt-4.2.3-static/plugins/sqldrivers//libqsqlmysql.a(main.o)(.gnu.linkonce.t._ZN18QMYSQLDriverPluginD0Ev+0x30):
In function `QMYSQLDriverPlugin::~QMYSQLDriverPlugin()':
: undefined reference to `QSqlDriverPlugin::~QSqlDriverPlugin()'
/usr/local/Trolltech/Qt-4.2.3-static/plugins/sqldrivers//libqsqlmysql.a(main.o)(.gnu.linkonce.d._ZTI18QMYSQLDriverPlugin+0x8):
undefined reference to `typeinfo for QSqlDriverPlugin'
collect2: ld returned 1 exit status
make: *** [jupiter-server] Error 1
Thanks in advance for any help!
--Dave
--
[ signature omitted ]
Message 2 in thread
On Thursday 29 March 2007, Dave Smith wrote:
------------[ 8< ]--------------
> /usr/local/Trolltech/Qt-4.2.3-static/plugins/sqldrivers//libqsqlmysql.a(mai
>n.o)(.gnu.linkonce.d._ZTI18QMYSQLDriverPlugin+0x8): undefined reference to
> `typeinfo for QSqlDriverPlugin'
> collect2: ld returned 1 exit status
> make: *** [jupiter-server] Error 1
>
> Thanks in advance for any help!
>
> --Dave
>
> --
> To unsubscribe - send a mail to qt-interest-request@xxxxxxxxxxxxx with
> "unsubscribe" in the subject or the body. List archive and information:
> http://lists.trolltech.com/qt-interest/
Maybe i'm waaaaaaayyyyyyyy off, but doesn't plugin imply a shared library?
--
[ signature omitted ]