Friday, 15 January 2010

c++ - QMYSQL driver not loaded, tried all hints -



c++ - QMYSQL driver not loaded, tried all hints -

iam writing c++ application qt 5.3 using qt-creator ide on mac os 10.8. problem appears when iam trying load qmysql plugin

db = qsqldatabase::adddatabase("qmysql");

it results in

qsqldatabase: qmysql driver not loaded qsqldatabase: available drivers: qsqlite qmysql qmysql3 qodbc qodbc3 qpsql qpsql7

so tried

loader.setfilename("/users/kilian/qt/5.3/clang_64/plugins/sqldrivers/libqsqlmysql_debug.dylib"); qdebug() << loader.load(); qdebug() << loader.errorstring();

to improve output

"die bibliothek /users/foob/qt/5.3/clang_64/plugins/sqldrivers/libqsqlmysql_debug.dylib kann nicht geladen werden: (dlopen(/users/foob/qt/5.3/clang_64/plugins/sqldrivers/libqsqlmysql_debug.dylib, 5): library not loaded: libmysqlclient.18.dylib referenced from: /users/foob/qt/5.3/clang_64/plugins/sqldrivers/libqsqlmysql_debug.dylib reason: image not found)"

so tried otool

otool -l build-$appname-desktop-debug/$appname.app/contents/macos/$appname build-$appname-desktop-debug/$appname.app/contents/macos/$appname: /usr/local/mysql/lib/libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0) /users/foob/qt/5.3/clang_64/lib/qtwidgets.framework/versions/5/qtwidgets (compatibility version 5.3.0, current version 5.3.0) /users/foob/qt/5.3/clang_64/lib/qtgui.framework/versions/5/qtgui (compatibility version 5.3.0, current version 5.3.0) /users/foob/qt/5.3/clang_64/lib/qtcore.framework/versions/5/qtcore (compatibility version 5.3.0, current version 5.3.0) /users/foob/qt/5.3/clang_64/lib/qtsql.framework/versions/5/qtsql (compatibility version 5.3.0, current version 5.3.0) /system/library/frameworks/opengl.framework/versions/a/opengl (compatibility version 1.0.0, current version 1.0.0) /system/library/frameworks/agl.framework/versions/a/agl (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 56.0.0) /usr/lib/libsystem.b.dylib (compatibility version 1.0.0, current version 169.3.0)

as information, built qmysql plugin myself with

$cd qt/5.3/src/qtbase/src/plugins/sqldrivers/mysql/ $qmake "includepath+=/usr/local/mysql/include" "libs+=-l/usr/local/mysql/lib -lmysqlclient_r" mysql.pro $ create make -f makefile.release make[1]: nil done `all'. create -f makefile.debug make[1]: nil done `all'. $ create install create -f makefile.release install cp -f "../../../../plugins/sqldrivers/libqsqlmysql.dylib" "/users/foob/qt/5.3/clang_64/plugins/sqldrivers/libqsqlmysql.dylib" cp -f /users/foob/qt/5.3/src/qtbase/lib/cmake/qt5sql/qt5sql_qmysqldriverplugin.cmake /users/foob/qt/5.3/clang_64/lib/cmake/qt5sql/ create -f makefile.debug install cp -f "../../../../plugins/sqldrivers/libqsqlmysql_debug.dylib" "/users/foob/qt/5.3/clang_64/plugins/sqldrivers/libqsqlmysql_debug.dylib" cp -f /users/foob/qt/5.3/src/qtbase/lib/cmake/qt5sql/qt5sql_qmysqldriverplugin.cmake /users/foob/qt/5.3/clang_64/lib/cmake/qt5sql/

everythink seems fine, set before dyld_library_path in /etc/profile export dyld_library_path=/usr/local/mysql/lib:$dyld_library_path

echo $dyld_library_path

results in

/usr/local/mysql/lib:

the folder /usr/local/mysql/lib :

$ls -lisa /usr/local/mysql/lib/ total 556840 2147230 0 drwxr-xr-x 12 root wheel 408 21 jun 00:01 . 2147093 0 drwxr-xr-x 17 root wheel 578 21 jun 00:01 .. 2147231 8384 -rwxr-xr-x 1 root wheel 4289380 6 mai 13:18 libmysqlclient.18.dylib 2147232 20744 -rw-r--r-- 1 root wheel 10620040 6 mai 13:18 libmysqlclient.a 2147233 8 lrwxr-xr-x 1 root wheel 23 21 jun 00:01 libmysqlclient.dylib -> libmysqlclient.18.dylib 2147234 8 lrwxr-xr-x 1 root wheel 23 21 jun 00:01 libmysqlclient_r.18.dylib -> libmysqlclient.18.dylib 2147235 8 lrwxr-xr-x 1 root wheel 16 21 jun 00:01 libmysqlclient_r.a -> libmysqlclient.a 2147236 8 lrwxr-xr-x 1 root wheel 20 21 jun 00:01 libmysqlclient_r.dylib -> libmysqlclient.dylib 2147237 261360 -rw-r--r-- 1 root wheel 133814816 6 mai 13:08 libmysqld-debug.a 2147239 266288 -rw-r--r-- 1 root wheel 136335512 6 mai 13:18 libmysqld.a 2147240 32 -rw-r--r-- 1 root wheel 14544 6 mai 13:18 libmysqlservices.a 2147241 0 drwxr-xr-x 17 root wheel 578 6 mai 13:21 plugin

the related parts of .pro file iam using

macx: { includepath += /usr/local/mysql/include \ /users/foob/qt/5.3/clang_64/include } macx: { libs += -l/usr/local/mysql/lib -lmysqld -lmysqlclient -v }

does have hint iam doing wrong?

p.s. changed user & app name privacy.

fixed issue, wasn't aware possible utilize otool , install_name_tool dylibs too. did with

install_name_tool -change libqsqlmysql_debug.dylib /users/foob/qt/5.3/src/qtbase/plugins/sqldrivers/libqsqlmysql_debug.dylib qt/5.3/clang_64/plugins/sqldrivers/libqsqlmysql_debug.dylib

now works. knows why libs aren't found in first place? checked makefile produced qmake , seems fine. unusual mac ...

c++ mysql osx qt otool

No comments:

Post a Comment