Trolltech Home | Qt-interest Home | Recent Threads | All Threads | Author | Date
All threads index page 7

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 ]