windows qt連接postgresql(集錦)

轉載於: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.


---------------------------------------



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

請問各位朋友,這是怎麼回事?如何解決?
不勝感激
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章