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.
- 1935 megtekintés
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
- A hozzászóláshoz be kell jelentkezni
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!"
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Köszi...
Attila, Perger
-----------------------------------------------------
"Az a szoftver, amelyiket nem fejlesztik, az halott!"
- A hozzászóláshoz be kell jelentkezni
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!"
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Igen, de ha jól tudom csak akkor, ha statikusan akarok linkelni. Vagy tévedek?
Attila, Perger
-----------------------------------------------------
"Az a szoftver, amelyiket nem fejlesztik, az halott!"
- A hozzászóláshoz be kell jelentkezni
Windowson ez nem teljesen igaz, ott ugyanis nem lehet dinamikusan dll-hez linkelni, ahhoz is kell egy .a/.lib file. Ez ugyan dinamikus linkeles lesz, de...
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni