转载于:http://no001.blog.51cto.com/1142339/301357
经过一天半的时间 ,,终于搞定了。。。。哈哈哈和
下面还是一些我参考过的文章,有空我会整体的整理一下,。。。
---------------------------
It works :D Quite why I'm still a little perplexed but here is what I have done:
Downloaded 4.1.2 src - previously I have 4.1.1 mingw installer
Configured with: configure -debug-and-release -plugin-sql-sqlite -plugin-sql-odbc -qt-libpng -qt-libjpeg -qt-sql-psql -L C:\psql\lib
Recompiled my app: placed the pgsql dlls in the same directory as the exe
I had also done the following prior to configure
set QTDIR=C:\Qt\4.1.2
set PATH=C:\Qt\4.1.2\bin
set PATH=%PATH%;C:\psql\include
set PATH=%PATH%;C:\psql\lib
set PATH=%PATH%;C:\MinGW\bin
So the differences are:
Slightly newer version of Qt - doubt if that makes any difference
I have the src rather than the installer - might make a difference
I have compiled it into Qt rather than as a plugin - might make a difference, although I doubt it.
When I get time I will compile Qt with pgsql as a plug in. I can't think of any difference at the moment.
jacek, thank you very much for your support and your valuable ideas.
graeme.
Downloaded 4.1.2 src - previously I have 4.1.1 mingw installer
Configured with: configure -debug-and-release -plugin-sql-sqlite -plugin-sql-odbc -qt-libpng -qt-libjpeg -qt-sql-psql -L C:\psql\lib
Recompiled my app: placed the pgsql dlls in the same directory as the exe
I had also done the following prior to configure
set QTDIR=C:\Qt\4.1.2
set PATH=C:\Qt\4.1.2\bin
set PATH=%PATH%;C:\psql\include
set PATH=%PATH%;C:\psql\lib
set PATH=%PATH%;C:\MinGW\bin
So the differences are:
Slightly newer version of Qt - doubt if that makes any difference
I have the src rather than the installer - might make a difference
I have compiled it into Qt rather than as a plugin - might make a difference, although I doubt it.
When I get time I will compile Qt with pgsql as a plug in. I can't think of any difference at the moment.
jacek, thank you very much for your support and your valuable ideas.
graeme.
---------------------------------------
Recently had a lot of trouble making QPSQL driver available in QT 4.3.1 version. But fun part was that - driver loaded correctly then i copied all dll from {%pgsql)\bin\ files to executable directory.
Copied files list.
comerr32.dll
depends.dll
gssapi32.dll
iconv.dll
k5sprt32.dll
krb5_32.dll
libeay32.dll
libiconv2.dll
libintl3.dll
libpq.dll
libxml2.dll
libxslt.dll
ssleay32.dll
Another interesting thing, that if I rename qsqlpsql4.dll to something else, driver still loads correctly :D :D. Perhaps I'm missing something, but at least it works now :)
By the way if drivers still does not get loaded try add this line in main.cpp file
qApp->addLibraryPath( qApp->applicationDirPath() + "/plugins");
And plugins directory should look like : plugins\sqldrivers\qsqlpsql4.dll
-----------------------------------
我先安装了PostgreSQL 8.2。
再装DEV-C++
再Qt.
环境变量如下:
INCLUDE=D:\PostgreSQL\8.2\include;D:\Dev-Cpp\include;D:\qt\4.3.4\include
LIB=D:\PostgreSQL\8.2\lib;D:\Dev-Cpp\lib;D:\qt\4.3.4\lib
PATH=D:\PostgreSQL\8.2\bin;D:\Dev-Cpp\bin;D:\qt\4.3.4\bin
后运行 configure.exe -share -release -qt-sql-psql -qt-sql-odbc -qt-zlib -qt-gif -qt-libpng -qt-libjpeg -qt-style-windowsxp -platform win32-g++ -L D:\PostgreSQL\8.2\bin -I D:\PostgreSQL\8.2\include
到此一切正常。
可是运行mingw32-make后出现以下问题。
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
oc -Wl,-s -mthreads -Wl -shared -Wl,--out-implib,d:\Qt\4.3.4\lib\libQtSql4.a -o
..\..\lib\QtSql4.dll object_script.QtSql.Release -L"d:\Qt\4.3.4\lib" -L"d:\Post
greSQL\8.2\lib" -L"d:\Dev-Cpp\lib" -L"d:\qt\4.3.4\lib" -L"d:\Qt\4.3.4\lib" tmp\o
bj\release_shared\QtSql_resource_res.o -LD:\PostgreSQL\8.2\lib -lpq -lws2_32 -la
dvapi32 -lodbc32 -lQtCore4
D:\Dev-Cpp\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot f
ind -lpq
collect2: ld returned 1 exit status
mingw32-make[2]: *** [..\..\lib\QtSql4.dll] Error 1
mingw32-make[2]: Leaving directory `D:/qt/4.3.4/src/sql'
mingw32-make[1]: *** [release] Error 2
mingw32-make[1]: Leaving directory `D:/qt/4.3.4/src/sql'
mingw32-make: *** [sub-sql-make_default-ordered] Error 2
请问各位朋友,这是怎么回事?如何解决?
不胜感激
再装DEV-C++
再Qt.
环境变量如下:
INCLUDE=D:\PostgreSQL\8.2\include;D:\Dev-Cpp\include;D:\qt\4.3.4\include
LIB=D:\PostgreSQL\8.2\lib;D:\Dev-Cpp\lib;D:\qt\4.3.4\lib
PATH=D:\PostgreSQL\8.2\bin;D:\Dev-Cpp\bin;D:\qt\4.3.4\bin
后运行 configure.exe -share -release -qt-sql-psql -qt-sql-odbc -qt-zlib -qt-gif -qt-libpng -qt-libjpeg -qt-style-windowsxp -platform win32-g++ -L D:\PostgreSQL\8.2\bin -I D:\PostgreSQL\8.2\include
到此一切正常。
可是运行mingw32-make后出现以下问题。
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
oc -Wl,-s -mthreads -Wl -shared -Wl,--out-implib,d:\Qt\4.3.4\lib\libQtSql4.a -o
..\..\lib\QtSql4.dll object_script.QtSql.Release -L"d:\Qt\4.3.4\lib" -L"d:\Post
greSQL\8.2\lib" -L"d:\Dev-Cpp\lib" -L"d:\qt\4.3.4\lib" -L"d:\Qt\4.3.4\lib" tmp\o
bj\release_shared\QtSql_resource_res.o -LD:\PostgreSQL\8.2\lib -lpq -lws2_32 -la
dvapi32 -lodbc32 -lQtCore4
D:\Dev-Cpp\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot f
ind -lpq
collect2: ld returned 1 exit status
mingw32-make[2]: *** [..\..\lib\QtSql4.dll] Error 1
mingw32-make[2]: Leaving directory `D:/qt/4.3.4/src/sql'
mingw32-make[1]: *** [release] Error 2
mingw32-make[1]: Leaving directory `D:/qt/4.3.4/src/sql'
mingw32-make: *** [sub-sql-make_default-ordered] Error 2
请问各位朋友,这是怎么回事?如何解决?
不胜感激