Compilieren von Postgres Plugin schlägt fehl unter Vista

Alles rund um die Programmierung mit Qt
Antworten
Flashpixx
Beiträge: 29
Registriert: 10. Juli 2007 12:54
Kontaktdaten:

Compilieren von Postgres Plugin schlägt fehl unter Vista

Beitrag von Flashpixx »

Ich versuche aktuell Qt 4.5.2 mit dem Postgres Plugin 8.4-rc2 unter Vista (32 Bit) zu kompilieren (analog unter Linux und OSX lief es problemlos).

Ich habe Postgres nach dieser Anleitung http://developer.postgresql.org/pgdocs/ ... libpq.html und auch testweise mit Cygwin kompiliert.
In die Umgebungsvariablen LIBS und INCLUDE die entsprechenden Pfade eingetragen, configure mit -plugin-sql-psql ausgeführt und wenn ich nun versuche mit nmake (VS Studio 9 bzw 2008) zu kompilieren, erhalte ich die Meldung:

Code: Alles auswählen

        link /LIBPATH:"c:\Library\Qt\4.5.2\lib" /LIBPATH:"c:\Library\Qt\4.5.2\li
b" /NOLOGO /DEBUG /DLL /MANIFEST /MANIFESTFILE:"tmp\obj\debug_shared\qsqlpsqld.i
ntermediate.manifest" /VERSION:4.52 /OUT:..\..\..\..\plugins\sqldrivers\qsqlpsql
d4.dll @C:\Users\ADMINI~1\AppData\Local\Temp\nm324D.tmp
   Bibliothek "..\..\..\..\plugins\sqldrivers\qsqlpsqld4.lib" und Objekt "..\..\
..\..\plugins\sqldrivers\qsqlpsqld4.exp" werden erstellt.
LINK : warning LNK4098: Standardbibliothek "MSVCRT" steht in Konflikt mit andere
n Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.
libpq.lib(fe-connect.obj) : error LNK2019: Verweis auf nicht aufgelöstes externe
s Symbol "__imp__WSAGetLastError@0" in Funktion "_connectNoDelay".
libpq.lib(fe-misc.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp
__WSAGetLastError@0".
Gleiche Meldungen erscheinen wenn ich nach http://doc.trolltech.com/4.5/sql-driver ... -and-above versuche das Modul einzeln zu kompilieren

Wäre nett, wenn mir jemand bitte weiter helfen könnte?

Danke

Phil[/code]
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

WSAGetLastError ist in ws2_32.lib definiert. Also fehlt ein LIBS += ws2_32 im pro-File.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Flashpixx
Beiträge: 29
Registriert: 10. Juli 2007 12:54
Kontaktdaten:

Beitrag von Flashpixx »

Christian81 hat geschrieben:[...] ist in ws2_32.lib definiert. Also fehlt ein LIBS += ws2_32 im pro-File.
In welche profile Datei?
Ich führe aktuell nur configure und nmake aus der Konsole aus

Danke

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

Beitrag von Christian81 »

Die pro-Datei des Plugins welches nicht kompiliert würde ich mal sagen...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Flashpixx
Beiträge: 29
Registriert: 10. Juli 2007 12:54
Kontaktdaten:

Beitrag von Flashpixx »

Nach der Doku müsste dann unter %QTDIR%\src\plugins\sqldrivers\psql
diese Datei liegen, tut sie aber nicht.
Habe das analog einmal für mySQL probiert, da kommt beim nmake dieser Fehler

Code: Alles auswählen

   Bibliothek "release\qsqlmysql.lib" und Objekt "release\qsqlmysql.exp" werden
erstellt.
LINK : fatal error LNK1104: Datei "release\qsqlmysql.lib" kann nicht geöffnet we
rden.
NMAKE : fatal error U1077: ""c:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
\link.EXE"": Rückgabe-Code "0x450"
Stop.
NMAKE : fatal error U1077: ""c:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
\nmake.exe"": Rückgabe-Code "0x2"
Ich habe in den Windows Umgebungsvariablen die LIB und INCLUDE entsprechend auf die Verzeichnisse wo die *.lib bzw *.dll (und *.h) Dateien liegen gesetzt, so dass nmake sie finden muss

Phil
Flashpixx
Beiträge: 29
Registriert: 10. Juli 2007 12:54
Kontaktdaten:

Beitrag von Flashpixx »

Ich habe das ganze noch mal von vorne her installiert und Qt ohne Postgres kompiliert, dann läuft es ohne Probleme durch.

Ich habe configure mit folgenden Parametern

Code: Alles auswählen

configure -plugin-sql-odbc -plugin-sql-sqlite -plugin-sql-mysql -qt-zlib -qt-libpng -qt-libjpeg
aufgerufen und dann ein nmake gemacht. Die Libs zu MySQL habe ich einfach in die Umgebungsvariablen %INCLUDE% und %LIB% eingetragen

Phil
Flashpixx
Beiträge: 29
Registriert: 10. Juli 2007 12:54
Kontaktdaten:

Beitrag von Flashpixx »

Ich habe nun das MakeFile gefunden

Code: Alles auswählen

C:\Library\Qt\4.5.2\src\plugins\sqldrivers\psql\Makefile.Debug
C:\Library\Qt\4.5.2\src\plugins\sqldrivers\psql\Makefile.Release
Dort sind folgende Einstellungen getroffen

Code: Alles auswählen

LINK          = link
LFLAGS        = /LIBPATH:"c:\Library\Qt\4.5.2\lib" /LIBPATH:"c:\Library\Qt\4.5.2\lib" /NOLOGO /DEBUG /DLL /MANIFEST /MANIFESTFILE:"tmp\obj\debug_shared\qsqlpsqld.intermediate.manifest" /VERSION:4.52
LIBS          = libpq.lib ws2_32.lib advapi32.lib c:\Library\Qt\4.5.2\lib\QtSqld4.lib c:\Library\Qt\4.5.2\lib\QtCored4.lib tmp\obj\debug_shared\qsqlpsqld_resource.res
Wenn ich nun bei den LFLAGS ein /NODEFAULTLIB:"ws2_32.lib" eintrage sehe ich diesen zwar bei der Ausführung "nmake" dieses Parameter, aber es zeigt keine Wirkung

Danke für die Hilfe

Phil [/code]
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Was soll das ganze? NODEFAULTLIB hat damit nichts zu tun und Makefiles muss man auch nicht editieren sondern die pro-Datei!!
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Flashpixx
Beiträge: 29
Registriert: 10. Juli 2007 12:54
Kontaktdaten:

Beitrag von Flashpixx »

Wenn ich den Vorschlag von Dir umsetze, d.h. in meine sql.pro den LIB Parameter hinzufüge, ist das Problem nicht behoben.

Die Libs liegen kompiliert im %LIB% Pfad, der über die Umgebungsvariablen zugänglich ist. Das Problem liegt wohl an dem Aufruf des Linkers, der durch die Makefiles die entsprechenden Parameter erhält.

Vielleicht könntest Du einen Vorschlag machen, der einen funktionsfähigen Durchlauf von nmake gewährleistet

Phil
Antworten