LINUX.ORG.RU

MySql | Qt + c++ - что скажете друзья?


0

0

Привет всем!!!

У меня вопрос такой: Откомпилил Qt с указанием флагов и заголовочных файлов и библиотек mysql. Все откомпилилось. Но возник такая проблема. mysql работает с консоли все создается и записывается в базу, но когда я пересаживаюсь на с++ ничего нехочет работать. Вот что пишет scorpio@shaman ~/Desktop/test $ make g++ -c -pipe -O2 -march=pentium-m -pipe -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT _GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr /include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/in clude/qt4/QtGui -I/usr/include/qt4 -I. -I. -I. -o test.o test.cpp test.cpp:3: warning: unused parameter ‘argc’ test.cpp:3: warning: unused parameter ‘argv’ g++ -o test test.o -L/usr/lib/qt4 -lQtGui -L/usr/lib/qt4 -L/usr/lib -lpng -l SM -lICE -lXrender -lXrandr -lXfixes -lXcursor -lfreetype -lfontconfig -lXext -l X11 -lQtCore -lz -lm -lrt -ldl -lpthread test.o: In function `main': test.cpp:(.text+0x1d): undefined reference to `QSqlDatabase::defaultConnection' test.cpp:(.text+0x59): undefined reference to `QSqlDatabase::addDatabase(QString const&, QString const&)' test.cpp:(.text+0xa5): undefined reference to `QSqlDatabase::setHostName(QString const&)' test.cpp:(.text+0xe4): undefined reference to `QSqlDatabase::setDatabaseName(QSt ring const&)' test.cpp:(.text+0x123): undefined reference to `QSqlDatabase::setUserName(QStrin g const&)' test.cpp:(.text+0x162): undefined reference to `QSqlDatabase::setPassword(QStrin g const&)' test.cpp:(.text+0x182): undefined reference to `QSqlDatabase::~QSqlDatabase()' test.cpp:(.text+0x1bb): undefined reference to `QSqlDatabase::~QSqlDatabase()' collect2: ld returned 1 exit status make: *** [test] Ошибка 1

мне вот эти строки недают покоя I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr /include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/in clude/qt4/QtGui -I/usr/include/qt4 Это старая Qt версии 4.1 и ее не компилил с поддержкой mysql; А стоит 4.3 c mysql. также присутствует и qt 3 версии одним словом с переменными окружения такая каша, что не смог разобраться) можно удалить 3 и 4 вирсии а оставить только 4.3) Но пошли на хитрость запускаю eclipse(плагин для работы с qt стоит) у казываю ему библиотеки и заголовки какие использовать. А он мне в ответ: что неможет найти QtMySql тогда указываю ему QtMySql/QtMySql - видит. ПРинаписани следующего кода: QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("host2"); db.setDatabaseName("mytest"); db.setUserName("root"); db.setPassword("57r80t10");

Пишет что нету QSqlDatabase. Что делать уважаемые гуру? Спасибо.

Ответ на: комментарий от Delay

Прописал Вот, что пишет,

make -f Makefile.Release make[1]: Entering directory `/home/scorpio/workspace/nikolas' g++ -Wl,-rpath,/usr/local/Trolltech/Qt-4.3.0/lib -o nikolas release/main.o -L/usr/local/Trolltech/Qt-4.3.0/lib -lQtGui -L/usr/lib/mysql -L/usr/local/Trolltech/Qt-4.3.0/lib -L/usr/X11R6/lib -lpng -lSM -lICE -pthread -pthread -lXi -lXrender -lXrandr -lXfixes -lXcursor -lXinerama -lfreetype -lfontconfig -lXext -lX11 -lQtCore -lz -lm -pthread -lgthread-2.0 -lrt -lglib-2.0 -ldl -lpthread release/main.o: In function `main': main.cpp:(.text+0x3d): undefined reference to `QSqlDatabase::defaultConnection' main.cpp:(.text+0x79): undefined reference to `QSqlDatabase::addDatabase(QString const&, QString const&)' main.cpp:(.text+0xcc): undefined reference to `QSqlDatabase::setHostName(QString const&)' main.cpp:(.text+0x10b): undefined reference to `QSqlDatabase::setDatabaseName(QString const&)' main.cpp:(.text+0x14a): undefined reference to `QSqlDatabase::setUserName(QString const&)' main.cpp:(.text+0x189): undefined reference to `QSqlDatabase::setPassword(QString const&)' main.cpp:(.text+0x1b0): undefined reference to `QSqlDatabase::~QSqlDatabase()' main.cpp:(.text+0x248): undefined reference to `QSqlDatabase::~QSqlDatabase()' collect2: ld returned 1 exit status make[1]: *** [nikolas] Ошибка 1 make[1]: Leaving directory `/home/scorpio/workspace/nikolas' make: *** [release] Ошибка 2

radion8
() автор топика
Ответ на: комментарий от Delay

Все разобрался большое тебе спасибо все работает. Моя прожка работает неподскажешь, что пожно придумать? Connect is bases... connect Создали таблицу "employee". Вставили РЅРѕРІСѓСЋ запись. Вставили РЅРѕРІСѓСЋ запись. Вставили РЅРѕРІСѓСЋ запись. Р’ таблице "employee" 5 столбцов: id, name, born, salary, married, Р’ таблице "employee" 3 записей: 123 Р’РёРЅРЅРё-РџСѓС… 31/12/1971 1234.56 1 345 Ослик Р�Р° 23/02/1965 2345.67 0 501 Поросёнок 14/06/1982 871 0 РџСЂРё закрытии РѕРєРЅР° соединение СЃ БД будет завершено. И выводит всякую белеберду использую кодек: QTextCodec *codec = QTextCodec::codecForName("CP1251"); QTextCodec::setCodecForTr(codec); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForLocale(codec);

не работает пробую QString::fromLocale8Bit("")- то же нехочет.

radion8
() автор топика
Ответ на: комментарий от alex_custov

Теоретически да, но бываю случаи когда необходимо пускать руками например при добавлении/удалении Q_OBJECT макроса в исходниках, после make distclean и т.д.

Delay ★★
()
Ответ на: комментарий от Delay

>Qt здесь не причем, разбирайся с кодировками в самой СУБД.

Все зделал по инструкции, но кодировка не работает, в файле /etc/mysql/my.ifn - поменял utf8 на cp1251. Что посоветуете?

radion8
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.