[megoldva] PSQL plugin - Qt 4.5.0 LGPL 2.1/GPL 3 --- MinGW

Fórumok

Sziasztok,

Régóta probálgatom a Qt-t és keresztplatformos fejlesztést csinálok. Eddig (=gépcsere) nem is volt gondom a PSQL adatbázis plugin kézi fordításával:


c:
cd "C:\Qt\4.x.x\src\plugins\sqldrivers\psql"
qmake "INCLUDEPATH+=C:\PROGRA~1\POSTGR~1\8.2\include" 
      "LIBS+=C:\PROGRA~1\POSTGR~1\8.2\lib\ms\libpq.lib" psql.pro
make

VAGY


c:
cd "C:\Qt\4.x.x\src\plugins\sqldrivers\psql"
qmake "INCLUDEPATH+=C:\PROGRA~1\POSTGR~1\8.2\include" 
      "LIBS+=C:\PROGRA~1\POSTGR~1\8.2\lib\libpq.a" psql.pro
make

Általában működött valamelyik. Próbáltam mindkettővel...

Az új 4.5-ös verzió viszont sehogy nem akarja használni az elkészített, lefordított új qsqlpsql4.dll, qsqlpsql4d.dll és vagy libqsqlpsql4.a, libqsqlpsql4d.a fájlokat.

Végső elkeseredésemben újrafordítottam az egész Qt 4.5-öt.


C:
cd C:\Qt\4.5.0
configure.exe -plugin-sql-psql 
              -plugin-sql-odbc 
              -plugin-sql-sqlite 
              -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg 
              -qt-style-windowsxp -qt-style-windowsvista 
              -platform win32-g++ 
              -L C:\Progra~1\PostgreSQL\8.2\lib 
              -I C:\Progra~1\PostgreSQL\8.2\include
make

Minden hibátlanul lefordult: csak a VC++ 2008 környezeti változóit kellett (INCLUDE, LIB stb..) kiiktatni. De ez sem segített.

Amikor kapcsolódok az adatbázishoz "Driver not loaded Driver not loaded" üzenetet kapok.

Tud ebben valaki segíteni?

Köszönöm.

Hozzászólások

Milyen könyvtárban van a dll?

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o

Szia,

Egy kicsit késve de azért válaszolnék... A lefordított fájlok a "C:\Qt\4.5.0\plugins\sqldrivers" könyvtárba kerültek: libqsqlpsql4.a, libqsqlpsqld4.a, qsqlpsql4.dll, qsqlpsqld4.dll.

Miután próbálkoztam és a fordításhoz is ki kellett kapcsolnom a VS 2008 környezeti változóit (mivel MinGW alapú LGPL-es Qt 4.5-ről van szó), módosítottam a PATH környezeti változóban lévő könyvtárak sorrendjét. Első helyre MinGW és a Qt 4.5.0 "bin" könyvtárai kerültek utána a PostgreSQL "bin" könyvtára és a többi. És a "qtvars.bat" is módosítva lett a PostgreSQL "bin" könytárral.


set QTDIR=C:\Qt\4.5.0
set PATH=C:\Qt\4.5.0\bin
set PATH=%PATH%;C:\MinGW\bin;C:\PROGRA~1\POSTGR~1\8.2\bin
set PATH=%PATH%;%SystemRoot%\System32
set QMAKESPEC=win32-g++

Így már elértem azt, hogy a
- "Qt 4.5 Command Promot"-ot indítva le lehet fordítani a programot és futtani is lehet mind a "release", mind a "debug" verziót
- Sikerült Eclipse + CDT + Qt plugin segítségével futtani és debuggolni a programot (ahogy korábban) :-)

Ami viszont nem működik az a QtCreator 1.0. Ha ezt indítom akkor nem tudom futtatni a programot:
" warning: QSqlDatabase: QPSQL driver not loaded
warning: QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC QPSQL7 QPSQL "
Trace warning után "Driver not loaded Driver not loaded" MessageBox ugrik elő.
Egyáltalán nem értem miért, a programok egyszerű kattintással elindulnak, a drivereket bemásoltam a "C:\Qt\QtCreator\bin\sqldrivers" könyvtárba és a listán is ott van!!?????

Attila, Perger
-----------------------------------------------------
"Az a szoftver, amelyiket nem fejlesztik, az halott!"

Szerintem innentől ez qt-interest levlist... :)

QCoreApplication::libraryPaths() mit mond?
Elvileg ezek alatt keresi az "sqldrivers" könyvtárat, és abban a pluginokat.

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o

Ez lett a megoldás... És jól működik, mert csak a QtCreator futásakor kapcsolja ki a kivastagított környezeti változókat. Amire természetesen egy MinGW-s környezetnél nincs szükség.

http://pergersoft.hu/store/qtcreator.png

Attila, Perger
-----------------------------------------------------
"Az a szoftver, amelyiket nem fejlesztik, az halott!"

Csak hint: altalaban a .a fajlok nem kellenek feltetlenul, ugyanis azok linkelesi fajlok, nincsenek futasidoben hasznalva.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.