Russian Qt Forum

Qt => Вопросы новичков => Тема начата: virtual_root от Август 17, 2012, 16:30



Название: Собрать драйвер для PostgrSQL
Отправлено: virtual_root от Август 17, 2012, 16:30
Ребята добрый день. Помогите пожалуйста! Уже пол дня вожусь и никак не могу собрать драйвер для из исходников. Перечитала кучу тем и статей, пробовала, не помогает...
На компьютере установлен windows7. В переменные среды добавила путь к nmake.
Запускаю командную строку пишу следующее:
Код:
cd C:\QtSDK\QtSources\4.8.1\src\plugins\sqldrivers\psql
Код:
qmake "INCLUDEPATH+=/usr/include/pgsql" "LIBS+=-L/usr/lib -lpq" psql.pro   
// эта строка меня смущает.. я скопировала её с просторов интернета, но мне не понятен путь.
потом делаю:
Код:
nmake 
и он завершается с фатальными ошибками, соответственно файл dll в папке с проектом не появляется...
прикрепляю файл со скриншотом консоли.

PostgreSQL у меня установлен в папку C:\PostGreSQL


Название: Re: Собрать драйвер для PostgrSQL
Отправлено: Patrin Andrey от Август 17, 2012, 16:48
http://rghost.ru/39839849 распакуй то, что лежит в архиве.
Так собирай qt (c:/QT/psql - путь до папки, куда распакуешь лежащее в архиве.)

configure -opensource -platform win32-g++ -no-qt3support -qt-sql-psql -I c:/QT/psql/include  -L c:/QT/psql/lib



Название: Re: Собрать драйвер для PostgrSQL
Отправлено: virtual_root от Август 17, 2012, 16:48
исправила смущающую меня строку, проделала все действия ещё раз. Может я что-то неправильно указала в переменных среды? Вот что я добавила:
Код:
;C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\;C:\QtSDK\Desktop\Qt\4.8.1\msvc2010\bin\
Первое для nmake, второе для qmake
После в консоли выполнила:
Код:
cd C:\QtSDK\QtSources\4.8.1\src\plugins\sqldrivers\psql
Код:
 qmake -o Makefile "INCLUDEPATH+=C:\PostGreSQL\include" "LIBS+=C:\PostGreSQL\lib\ms\libpq.lib" psql.pro
Код:
nmake
но dll файл так и не появился.. прилагаю скриншот консоли. Ребят подскажите, пожалуйста!


Название: Re: Собрать драйвер для PostgrSQL
Отправлено: virtual_root от Август 17, 2012, 16:54
Скачала, распаковала. Но консоль ругается..
Я прилагаю снова скриншот.


Название: Re: Собрать драйвер для PostgrSQL
Отправлено: virtual_root от Август 17, 2012, 17:18
Ребята вопрос закрыт. Все получилось. Оказалось надо компилировать в камандной строке Visual Studio! А я и не знала в обычной строке компилировала...


Название: Re: [РЕШЕНО] Собрать драйвер для PostgrSQL
Отправлено: virtual_root от Август 17, 2012, 17:49
Ребята, подскажите куда нужно положить полкчившиеся dll и lib файлы чтобы Qt не приложение на Qt не выдавало ошибку:
Код:
QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC


Название: Re: Собрать драйвер для PostgrSQL
Отправлено: virtual_root от Август 17, 2012, 17:56
Может что-то ещё нужно сделать? Я уже эти файлы во все папки какие нашла с plugins/sql положила, но не помогает...
В частности в эту папку C:\QtSDK\Desktop\Qt\4.8.1\mingw\plugins\sqldrivers


Название: Re: Собрать драйвер для PostgrSQL
Отправлено: virtual_root от Август 17, 2012, 17:58
Пишу следующий код:
Код:
    QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
    db.setHostName("localhost");
    db.setDatabaseName("postgres");
    db.setUserName("postgres");
    db.setPassword("1");
    if (db.open()) db.lastError();
На что он мне выдает что не может загрузить драйвер.
В чем может быть причина?


Название: Re: Собрать драйвер для PostgrSQL
Отправлено: virtual_root от Август 17, 2012, 18:04
у меня получились следующие файлики библиотек после сборки драйвера qsqlpsqld4.lib и qsqlpsqld4.dll


Название: Re: Собрать драйвер для PostgrSQL
Отправлено: virtual_root от Август 17, 2012, 18:13
Прилагаю код проекта в котором не подключается драйвер:
Код:
QT       += core gui sql

TARGET = QtPostgreSQL
TEMPLATE = app


SOURCES += main.cpp\
        widget.cpp

HEADERS  += widget.h

FORMS    += widget.ui

LIBS+= -Lqsqlpsqld4

Код
C++ (Qt)
#include <QtSql>
#include <QSqlDatabase>
#include "widget.h"
#include "ui_widget.h"
 
Widget::Widget(QWidget *parent) :
   QWidget(parent),
   ui(new Ui::Widget)
{
   ui->setupUi(this);
 
   QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
   db.setHostName("localhost");
   db.setDatabaseName("postgres");
   db.setUserName("postgres");
   db.setPassword("1");
   if (db.open()) db.lastError();
}
 
Widget::~Widget()
{
   delete ui;
}
Рядом с проектом и исполняемым файлом положила библиотеки драйвера, но всё равно в выводе приложения вижу:
 QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC


Название: Re: Собрать драйвер для PostgrSQL
Отправлено: trot от Август 18, 2012, 08:09
Драйвер пусть лежит там где лежат все драйвера для работы с БД. Сам драйвер не видет libpg.lib. Пропиши в переменных окружения ОС путь к библиотекам постгреса C:\PostGreSQL\lib. Должно все получиться.


Название: Re: Собрать драйвер для PostgrSQL
Отправлено: virtual_root от Август 20, 2012, 10:08
не выходит... может нужно драйвер в релизе собрать? у меня ведь в названии присутствует буква d
qsqlpsqld4.dll
Подскажите пожалуйста как из командной строки в релизе собрать? что нужно прописать?
Ребята, какие ещё у вас советы будут?


Название: Re: Собрать драйвер для PostgrSQL
Отправлено: virtual_root от Август 20, 2012, 10:37
Ребята всё оказалось просто: я работала с внешнего жесткого диска. Сейчас взяла и скопировала проект на внутрениий жесткий диск C и всё заработало!
Но у меня остался один важный вопрос: а на другой машине чтобы работать с моей программой придется установить PostGreSQL там базу мою поднять, но Qt ставить не придется??
Допустим я сделаю установщик моей программы и она сможет работать с PostgreeSQL если он будет установлен на той машине? И возможно ли программно создать базу а потом с ней и работать на другой машине?


Название: Re: Собрать драйвер для PostgrSQL
Отправлено: trot от Август 20, 2012, 11:19
1. Создаешь файл архива БД с помощью pg_dump, на целевой машины с помощью утилиты psql разворачиваешь дамп.
2. По Qt - или статическая сборка, или надо тащить с собой все dll, и кроме этого не забыть про qt.conf/


Название: Re: Собрать драйвер для PostgrSQL
Отправлено: virtual_root от Август 20, 2012, 11:22
спасибо