Russian Qt Forum
Июнь 17, 2024, 02:05 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Собрать драйвер для PostgrSQL  (Прочитано 6358 раз)
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
« Последнее редактирование: Август 17, 2012, 17:49 от tiny developer » Записан
Patrin Andrey
Гость
« Ответ #1 : Август 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

Записан
virtual_root
Гость
« Ответ #2 : Август 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 файл так и не появился.. прилагаю скриншот консоли. Ребят подскажите, пожалуйста!
Записан
virtual_root
Гость
« Ответ #3 : Август 17, 2012, 16:54 »

Скачала, распаковала. Но консоль ругается..
Я прилагаю снова скриншот.
Записан
virtual_root
Гость
« Ответ #4 : Август 17, 2012, 17:18 »

Ребята вопрос закрыт. Все получилось. Оказалось надо компилировать в камандной строке Visual Studio! А я и не знала в обычной строке компилировала...
Записан
virtual_root
Гость
« Ответ #5 : Август 17, 2012, 17:49 »

Ребята, подскажите куда нужно положить полкчившиеся dll и lib файлы чтобы Qt не приложение на Qt не выдавало ошибку:
Код:
QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC
Записан
virtual_root
Гость
« Ответ #6 : Август 17, 2012, 17:56 »

Может что-то ещё нужно сделать? Я уже эти файлы во все папки какие нашла с plugins/sql положила, но не помогает...
В частности в эту папку C:\QtSDK\Desktop\Qt\4.8.1\mingw\plugins\sqldrivers
Записан
virtual_root
Гость
« Ответ #7 : Август 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();
На что он мне выдает что не может загрузить драйвер.
В чем может быть причина?
Записан
virtual_root
Гость
« Ответ #8 : Август 17, 2012, 18:04 »

у меня получились следующие файлики библиотек после сборки драйвера qsqlpsqld4.lib и qsqlpsqld4.dll
Записан
virtual_root
Гость
« Ответ #9 : Август 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
« Последнее редактирование: Август 17, 2012, 18:15 от tiny developer » Записан
trot
Гость
« Ответ #10 : Август 18, 2012, 08:09 »

Драйвер пусть лежит там где лежат все драйвера для работы с БД. Сам драйвер не видет libpg.lib. Пропиши в переменных окружения ОС путь к библиотекам постгреса C:\PostGreSQL\lib. Должно все получиться.
Записан
virtual_root
Гость
« Ответ #11 : Август 20, 2012, 10:08 »

не выходит... может нужно драйвер в релизе собрать? у меня ведь в названии присутствует буква d
qsqlpsqld4.dll
Подскажите пожалуйста как из командной строки в релизе собрать? что нужно прописать?
Ребята, какие ещё у вас советы будут?
Записан
virtual_root
Гость
« Ответ #12 : Август 20, 2012, 10:37 »

Ребята всё оказалось просто: я работала с внешнего жесткого диска. Сейчас взяла и скопировала проект на внутрениий жесткий диск C и всё заработало!
Но у меня остался один важный вопрос: а на другой машине чтобы работать с моей программой придется установить PostGreSQL там базу мою поднять, но Qt ставить не придется??
Допустим я сделаю установщик моей программы и она сможет работать с PostgreeSQL если он будет установлен на той машине? И возможно ли программно создать базу а потом с ней и работать на другой машине?
Записан
trot
Гость
« Ответ #13 : Август 20, 2012, 11:19 »

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

спасибо
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.111 секунд. Запросов: 20.