Qt 4.4.0 mit psql kompilieren

Verschiedenes zu Qt
Antworten
Fisch
Beiträge: 3
Registriert: 3. Juni 2008 16:07

Qt 4.4.0 mit psql kompilieren

Beitrag von Fisch »

Hallo zusammen,

ich versuche seit einiger Zeit Qt mit pSQL zu kompilieren. Ich halte mich dabei an die Anleitungen von Volker Wiedel „QT 4x unter Visual Studio 2005“ und der PostgreSQL Dokumentation.

Ich verwende folgende Software:
  • Windows XP
    Visual Studio 2005 Standard Edition ohne SP1
    QT Version 4.4 ohne MinGW (qt-win-opensource-src-4.4.0)
    PostgreSQL 8.3.1
Leider bekomme ich ständig diese Fehlermeldung :

Code: Alles auswählen

link /LIBPATH:"c:\Programme\qt4\lib" /LIBPATH:"c:\Programme\qt4\lib" /NOLOGO /BASE:0x62000000 /INCREMENTAL:NO /DLL /MANIFEST /MANIFESTFILE:"tmp\obj\release_s
hared\QtSql.intermediate.manifest" /VERSION:4.40 /OUT:..\..\lib\QtSql4.dll @C:\DOKUME~1\levergbp\LOKALE~1\Temp\nm4D.tmp
   Bibliothek "..\..\lib\QtSql4.lib" und Objekt "..\..\lib\QtSql4.exp" werden erstellt.
libpq.lib(fe-connect.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__DeleteSecurityContext@4" in Funktion "_closePGconn".
libpq.lib(fe-connect.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__FreeCredentialsHandle@4" in Funktion "_closePGconn".
libpq.lib(fe-connect.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__SHGetFolderPathA@20" in Funktion "_pqGetHomeDirectory".
libpq.lib(fe-auth.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_FreeContextBuffer@4" in Funktion "_pg_SSPI_continue".
libpq.lib(fe-auth.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_InitializeSecurityContextA@48" in Funktion "_pg_SSPI_continue".
libpq.lib(fe-auth.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_AcquireCredentialsHandleA@36" in Funktion "_pg_SSPI_startup".
..\..\lib\QtSql4.dll : fatal error LNK1120: 6 nicht aufgelöste externe Verweise.
NMAKE : fatal error U1077: ""C:\Programme\Microsoft Visual Studio 8\VC\BIN\link.EXE"": Rückgabe-Code "0x460"
Stop.
NMAKE : fatal error U1077: ""C:\Programme\Microsoft Visual Studio 8\VC\BIN\nmake.exe"": Rückgabe-Code "0x2"
Stop.
NMAKE : fatal error U1077: "cd": Rückgabe-Code "0x2"

Dabei gehe ich wie folgt vor:

1)
Als erstes rufe ich die Visual Studio 2005 Eingabeaufforderung auf und führe im Visual Studi 8\common7\tools\vsvars.bat aus.

2)
Kompilieren von libpq
Zunächst wechsele ich in den src Ordner des Postgreverzeichnis.
Nun starte ich den Kompiliervorgang mittels:

nmake /f win32.mak

Die Dateien libpq.dll,libpqdll.lib und libpq.lib wurden erfolgreich erstellt

Code: Alles auswählen

interfaces\libpq\Release\libpq.dll
interfaces\libpq\Release\libpqdll.lib
interfaces\libpq\Release\libpq.lib)


Diese drei Dateien kopiere ich in dem lib Ordner von QT.
In meinem Fall: C:\Programme\qt4\lib.


3).
Anlegen folgender Systemvariablen

Code: Alles auswählen

PATH: 		
C:\Programme\qt\bin

QMAKESPEC:	
win32-msvc2005

QTDIR:		
C:\Programme\qt

LIB:			
C:\Programme\qt\lib

INCLUDE:	        
C:\Programme\postgresql-8.3.1src\src\include
C:\Programme\postgresql-8.3.1src\src\include\libpq
C:\Programme\postgresql-8.3.1src\src\interfaces\libpq
4)
Wechseln in das QT Verzeichnis (C:\Programme\Qt)

Ausführen des Befehls:
configure -release -no-stl -no-opengl -no-sql-sqlite -qt-sql-psql -platform win32-msvc2005

Die Einstellungen werden erfolgreich übernommen.

Starte ich nun mit nmake den Kompiliervorgang, tritt der oben beschriebene Fehler ein.

Lass ich die -qt-sql-psql Anweisung weg. Kompiliert qt erfolgreich durch.

In den anderen Foreneinträgen, konnte ich die gewünschte Informataion nicht finden.

Wäre jemand so freundlich mir bei diesem Problem zu helfen?
Danke im voraus

Mit freundlichen Grüßen
Fisch
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Suche mal nach den Funktionen im msdn. Dort steht auch in welchen Libs die Funktionen sind. Füge die hinzu und es müsste gehen. Du linkst statisch gegen Postgres und postgres benutzt diese Funktionen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Fisch
Beiträge: 3
Registriert: 3. Juni 2008 16:07

Beitrag von Fisch »

Nachdem ich deinen Ratschlag beherzigt habe, musste ich leider feststellen, dass ich immer noch vor dem gleichen Problem stehe.

Wenn Ihr noch weitere Tipps habt, wäre ich euch sehr dankbar.

MfG
Fisch
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Fisch hat geschrieben:Nachdem ich deinen Ratschlag beherzigt habe, musste ich leider feststellen, dass ich immer noch vor dem gleichen Problem stehe.
Was hast Du gemacht? Wenn Du jetzt gegen die Libs linkst würden die Fehler nicht mehr kommen.

Was ich aber nicht verstehe ist, warum Du gegen die statische Lib linkst. Lösche mal libpq.lib und nenne die import-lib libpqdll.lib nach libpq.lib um.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Fisch
Beiträge: 3
Registriert: 3. Juni 2008 16:07

Beitrag von Fisch »

Nachdem ich das ganze in einer sauberen VMWare Umgebung probiert habe, funktionierte alles auf Anhieb.

Ich werde mich nun mal einer Neuinstallation meines Systems widmen.
Der Rechner stürzt mir mittlerweile häufiger ab.

Wie dem auch sei:

Vielen Dank für deine Hilfe

Mit freundlichen Grüßen
Fisch
Antworten