qmake-Projekt: Einbindung statischer libpqxx unter MinGW

Alles rund um die Programmierung mit Qt
Antworten
baume
Beiträge: 9
Registriert: 23. Januar 2005 01:50
Wohnort: Stuttgart

qmake-Projekt: Einbindung statischer libpqxx unter MinGW

Beitrag von baume »

Hallo allerseits,

vermutlich handelt es sich bei meinem Problem um die übliche "Mist-hätt-ich-selber-drauf-kommen-können"-Sache, aber trotz ewigem Rumprobieren habe ich leider bislang noch keine Lösung gefunden.

Ich portiere gerade eine Qt-Anwendung (Qt4-open-source) mit Datenbank-Anschluss (PostgreSQL via libpqxx) von Linux nach Windows (XP). Das Ganze wird mit MinGW vom Qt 4.2.0 Command Prompt aus übersetzt. Das Projekt baut auf folgenden Quell-Baum:

Code: Alles auswählen

$SRC_ROOT/museum.pro
                  \_src/
                          src.pro
                          main.cpp
                  \_ui/ ------------------- liefert statische libui.a
                          ui.pro
                          xyz.ui (ca. 10 ui-files)
                          xyz.cpp, xyz.h (ui-impl.)
                  \_musbase/ ----------- liefert statische libmusbase.a
                          musbase.pro
                          zahlreiche cpp/h-files für Basis-Bibliothek
                  \_moc/        (moc-files)
                  \_tmp/         (*.o-files)
                  \_bin/          (muserver.exe)
                  \_lib/           (statische Bibl.)
Die Quellen werden allesamt ohne Murren übersetzt und die Objekt-files wie gewünscht in den statischen Bibliotheken gebündelt. Lediglich der Linker beschwert sich bei der Ausführung der Zeile ...

Code: Alles auswählen

g++ -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -Wl,-s -Wl,-subsystem,windows -o "..\bin\muserver.exe" ..\tmp\main.o -L"c:\MinGW\local\lib" -L"c:\Qt\4.2.0\lib" -lmingw32 -lqtmain C:\MinGW\local\lib\libpqxx.a ../lib/libui.a ../lib/libmusbase.a -lQtGui4 -lQtCore4
... mit zig Fehlern der folgenden Art (exemplarisch):

Code: Alles auswählen

../lib/libmusbase.a(DBase.o)(.text+0x85):DBase.C: undefined reference to `pqxx::connection_base::username()`
(...)
../lib/libmusbase.a(DBase.o)(.text+0xa105):DBase.C: undefined reference to `pqxx::transaction_base::commit()`
(...)
Offenbar hängen die Meldungen mit einer (fehlerhaften?) Einbindung der statischen libpqxx.a zusammen. Die Projektdatei src.pro lautet in Auszügen wie folgt:

Code: Alles auswählen

TARGETDEPS += C:\MinGW\local\lib\libpqxx.a \
	      ../lib/libmusbase.a \
              ../lib/libui.a
	      
LIBS += C:\MinGW\local\lib\libpqxx.a \
	../lib/libui.a \
        ../lib/libmusbase.a
INCLUDEPATH += ../ui \
               ../musbase \
               C:\boost\include\boost-1_33_1 \
	       C:\Programme\PostgreSQL\8.1\include \
	       C:\MinGW\local\include
# POST_TARGETDEPS += C:\MinGW\local\lib\libpqxx.a
MOC_DIR = ../moc/ 
UI_DIR = ../ui/ 
OBJECTS_DIR = ../tmp/ 
QMAKE_LIBDIR = C:\MinGW\local\lib
QMAKE_CXXFLAGS_RELEASE += -O3 
QMAKE_CXXFLAGS_DEBUG += -g 
TARGET = muserver
DESTDIR = ../bin 
CONFIG += warn_on \
	  windows \
	  qt
TEMPLATE = app 
SOURCES += main.cpp 
Die libpqxx ( Version 2.6.8 ) hatte ich übrigens gemäß der anhängigen INSTALL.txt installiert:

Code: Alles auswählen

...
Getting Started with MinGW and MSYS
(based on contribution by Michael J. Pedersen, 2004-08-17)

MSYS is a Unix-like environment for Windows.  Once you have this installed,
building libpqxx should be a lot more like it is under Unix except that the
locations of libraries and such aren't sufficiently standardized.

Packages to download if you don't have them already:
1) MinGW (http://www.mingw.org/), plus any updates.
2) MSYS (http://www.mingw.org/), again with any updates.
3) w32api (http://www.mingw.org/).
4) PostgreSQL (http://www.postgresql.org/).
5) zlib (http://www.zlib.org/).

It is generally recommended to get the latest versions of these packages.

Compiling and installing PostgreSQL before you get to libpqxx:
1) Install MinGW (install to c:\mingw)
2) Install MSYS--but not into MinGW directory tree!
3) Run MSYS (Start->Programs->MinGW->MSYS->msys)
4) Extract, compile, and install zlib
    # From main source directory of zlib:
    ./configure --prefix=c:/mingw/local && make && make install
5) Extract, compile, and install postgres
    # From main source directory of PostgreSQL:
    ./configure --prefix=c:/mingw/local --with-includes=c:/mingw/local/include --with-libs=c:/mingw/local/lib
    make && make install
6) Extract, compile, and install libpqxx
    export LDFLAGS=-lws2_32
    ./configure --prefix=c:/mingw/local --enable-static
    make && make install
...
Was mache ich falsch? Kann mir jemand auf die Sprünge helfen? Ich bin für jeden Rat dankbar!
Gruss, Martin
AlGaN
Beiträge: 25
Registriert: 25. März 2006 12:45

Beitrag von AlGaN »

Hi,

soviel ich weiß, muss man bei Qt im .pro-File zusätzliche Libraries im Unix-Stil angeben, wenn also die Lib libpqxx.lib heisst, muss im .pro-File

Code: Alles auswählen


QMAKE_LIBDIR += lib
...
LIBS += lpqxx

stehen (wenn die Lib im lib\-Unterverzeichnis steht). Bin mir aber nicht sicher, ob das unter MinGW auch so ist, da dies ja eine Unix-Emulation ist.

Gruss,
AlGaN
baume
Beiträge: 9
Registriert: 23. Januar 2005 01:50
Wohnort: Stuttgart

Beitrag von baume »

Hallo AlGaN,

danke für Deine Antwort!

Ich habe eben die Gewissheit gewonnen, dass mein Linkerproblem nicht im .pro-File zu lösen ist. Hierzu hatte ich folgendes Minimalbeispiel konstruiert:

Code: Alles auswählen

//
// main.cpp
//

// namespace 'std'
#include <string>
#include <iostream>
#include <iomanip>

// pqxx library
#include <pqxx/connection>

int main ( int argc, char ** argv )
{

  std::string cinfo = "host=polaris dbname=muserver user=baume port=5432";
  
  pqxx::connection *conn = new pqxx::connection( cinfo );
  
  std::cout << "Connection is open: " << ( conn->is_open() ? "YES" : "NO" ) << std::endl;

  if ( conn->is_open() ) {
    
    conn->disconnect();
    
    std::cout << "Closed Connection: " << ( !conn->is_open() ? "SUCESS" : "FAILED" ) << std::endl;
    
  }
  
  return 0;

}
Der Übersetzungslauf erfolgte mit folgendem Befehl:

Code: Alles auswählen

g++ main.cpp /mingw/local/lib/libpq.a /mingw/local/lib/libpqxx.a -o pqxx_test -I/mingw/local/include -L/mingw/local/lib
Daraufhin bekomme ich folgende Fehlerliste vom Linker gemeldet:

Code: Alles auswählen

c:/mingw/local/lib/libpqxx.a(connection.o)(.text+0x95): In function `ZN4pqxx16connectionpolicy13do_disconnectEP7pg_conn':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection.cxx:72: undefined reference to `PQfinish'
c:/mingw/local/lib/libpqxx.a(connection.o)(.text+0x172): In function `ZN4pqxx13connect_async18do_completeconnectEP7pg_conn':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection.cxx:142: undefined reference to `PQconnectPoll'
c:/mingw/local/lib/libpqxx.a(connection.o)(.text+0x328): In function `ZN4pqxx13connect_async15do_startconnectEP7pg_conn':
c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/basic_string.h:44: undefined reference to `PQconnectStart'
c:/mingw/local/lib/libpqxx.a(connection.o)(.text+0x345): In function `ZN4pqxx13connect_async15do_startconnectEP7pg_conn':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection.cxx:118: undefined reference to `PQconnectPoll'
c:/mingw/local/lib/libpqxx.a(connection.o)(.text+0x429): In function `ZN4pqxx16connectionpolicy13normalconnectEP7pg_conn':
c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/basic_string.h:44: undefined reference to `PQconnectdb'
c:/mingw/local/lib/libpqxx.a(connection.o)(.text+0x4f5): In function `ZN4pqxx14connect_direct15do_startconnectEP7pg_conn':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection.cxx:88: undefined reference to `PQstatus'
c:/mingw/local/lib/libpqxx.a(connection.o)(.text+0x50e): In function `ZN4pqxx14connect_direct15do_startconnectEP7pg_conn':
c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/ext/new_allocator.h:62: undefined reference to `PQerrorMessage'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x10e): In function `ZNK4pqxx15connection_base10backendpidEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:121: undefined reference to `PQbackendPID'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x2be): In function `ZNK4pqxx15connection_base16protocol_versionEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:198: undefined reference to `PQprotocolVersion'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x37e): In function `ZNK4pqxx15connection_base14server_versionEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:208: undefined reference to `PQserverVersion'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x424): In function `ZN4pqxx15connection_base17read_capabilitiesEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:1337: undefined reference to `PQserverVersion'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x52e): In function `ZN4pqxx15connection_base10get_resultEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:1193: undefined reference to `PQgetResult'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x5e0): In function `ZN4pqxx15connection_base13switchnoticerERKSt8auto_ptrINS_7noticerEE':
c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/memory:299: undefined reference to `PQsetNoticeProcessor'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x748): In function `ZN4pqxx15connection_base13consume_inputEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:608: undefined reference to `PQconsumeInput'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x7e8): In function `ZNK4pqxx15connection_base7is_busyEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:614: undefined reference to `PQisBusy'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x8ae): In function `ZNK4pqxx15connection_base6ErrMsgEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:699: undefined reference to `PQerrorMessage'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x95f): In function `ZN4pqxx15connection_base16InternalSetTraceEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:1002: undefined reference to `PQtrace'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x98b):C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:1003: undefined reference to `PQuntrace'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0xa58): In function `ZNK4pqxx15connection_base6StatusEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:1010: undefined reference to `PQstatus'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0xbb7): In function `ZN62_GLOBAL__N__ZN4pqxx15connection_baseC2ERNS_16connectionpolicyE7wait_fdEibP7timeval':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:1263: undefined reference to `select@20'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0xe4b): In function `ZN4pqxx15connection_base11set_noticerESt8auto_ptrINS_7noticerEE':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:441: undefined reference to `PQsetNoticeProcessor'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x1fb0): In function `ZN4pqxx15connection_base12check_resultERKNS_6resultEPKc':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:383: undefined reference to `select@20'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x2870): In function `ZN4pqxx15connection_base12EndCopyWriteEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:1153: undefined reference to `PQputCopyEnd'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x2ba7): In function `ZN4pqxx15connection_base12EndCopyWriteEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/result.hxx:877: undefined reference to `PQgetResult'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x340b): In function `ZN4pqxx15connection_base9MakeEmptyERNS_6resultE':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/result.hxx:877: undefined reference to `PQmakeEmptyPGresult'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x3757): In function `ZN4pqxx15connection_base10get_notifsEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:623: undefined reference to `PQconsumeInput'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x3781): In function `ZN4pqxx15connection_base10get_notifsEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:779: undefined reference to `PQnotifies'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x3de4):C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:788: undefined reference to `PQnotifies'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x4ea4): In function `ZN4pqxx15connection_base12ReadCopyLineERSs':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:1061: undefined reference to `PQgetCopyData'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x50f3): In function `ZN4pqxx15connection_base12ReadCopyLineERSs':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/result.hxx:877: undefined reference to `PQgetResult'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x5153):C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/result.hxx:879: undefined reference to `PQgetResult'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x5a99): In function `ZN4pqxx15connection_base13WriteCopyLineERKSs':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:1137: undefined reference to `PQputCopyData'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x5e2a):C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:1140: undefined reference to `PQendcopy'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x6abe): In function `ZN4pqxx15connection_base10AddTriggerEPNS_7triggerE':
c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/basic_string.h:1452: undefined reference to `PQexec'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x7c10): In function `ZN4pqxx15connection_base10SetupStateEv':
c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/basic_string.h:414: undefined reference to `PQsendQuery'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x7c64): In function `ZN4pqxx15connection_base10SetupStateEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/result.hxx:879: undefined reference to `PQgetResult'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x8c38): In function `ZN4pqxx15connection_base7esc_rawEPKhj':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:779: undefined reference to `PQescapeByteaConn'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x914c): In function `ZN4pqxx15connection_base3escEPKcj':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:1209: undefined reference to `PQescapeStringConn'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x95b5): In function `ZN4pqxx15connection_base10start_execERKSs':
c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/basic_string.h:1452: undefined reference to `PQsendQuery'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x97f0): In function `ZN4pqxx15connection_base5ResetEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:943: undefined reference to `PQreset'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x9ee8): In function `ZN4pqxx15connection_base13prepared_execERKSsPKPKcPKii':
c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/basic_string.h:1452: undefined reference to `PQexecPrepared'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x9fcf):c:/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/basic_string.h:1452: undefined reference to `PQprepare'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0xa72a): In function `ZN4pqxx15connection_base4ExecEPKci':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/result.hxx:877: undefined reference to `PQexec'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0xa7a6):C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/result.hxx:879: undefined reference to `PQexec'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0x16c): In function `ZN62_GLOBAL__N__ZN4pqxx15connection_baseC2ERNS_16connectionpolicyE9socket_ofEPK7pg_conn':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:129: undefined reference to `PQsocket'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0xccb7): In function `ZN4pqxx15connection_base4portEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:693: undefined reference to `PQport'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0xccd1):C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:693: undefined reference to `PQport'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0xccf7): In function `ZN4pqxx15connection_base8hostnameEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:686: undefined reference to `PQhost'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0xcd11):C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:686: undefined reference to `PQhost'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0xcd37): In function `ZN4pqxx15connection_base8usernameEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:679: undefined reference to `PQuser'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0xcd51):C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:679: undefined reference to `PQuser'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0xcd77): In function `ZN4pqxx15connection_base6dbnameEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:672: undefined reference to `PQdb'
c:/mingw/local/lib/libpqxx.a(connection_base.o)(.text+0xcd91):C:/msys/1.0/local/src/libpqxx-2.6.8/src/connection_base.cxx:672: undefined reference to `PQdb'
c:/mingw/local/lib/libpqxx.a(util.o)(.text+0x76): In function `ZN4pqxx8internal14freemem_resultEP9pg_result':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/util.cxx:584: undefined reference to `PQclear'
c:/mingw/local/lib/libpqxx.a(util.o)(.text+0x106): In function `ZN4pqxx8internal13freemem_notifEP8pgNotify':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/util.cxx:589: undefined reference to `PQfreemem'
c:/mingw/local/lib/libpqxx.a(util.o)(.text+0x23e0): In function `ZN4pqxx8internal13escape_stringEPKcj':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:864: undefined reference to `PQescapeString'
c:/mingw/local/lib/libpqxx.a(util.o)(.text+0x1e5): In function `ZN4pqxx8internal9freepqmemEPv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/util.cxx:680: undefined reference to `PQfreemem'
c:/mingw/local/lib/libpqxx.a(result.o)(.text+0xe3): In function `ZNK4pqxx6result4sizeEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:813: undefined reference to `PQntuples'
c:/mingw/local/lib/libpqxx.a(result.o)(.text+0x183): In function `ZNK4pqxx6result5emptyEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:813: undefined reference to `PQntuples'
c:/mingw/local/lib/libpqxx.a(result.o)(.text+0x23a): In function `ZNK4pqxx6result13ThrowSQLErrorERKSsS2_':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:813: undefined reference to `PQresultErrorField'
c:/mingw/local/lib/libpqxx.a(result.o)(.text+0x998): In function `ZNK4pqxx6result9CmdStatusEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:813: undefined reference to `PQcmdStatus'
c:/mingw/local/lib/libpqxx.a(result.o)(.text+0x9ff): In function `ZNK4pqxx6result13affected_rowsEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:813: undefined reference to `PQcmdTuples'
c:/mingw/local/lib/libpqxx.a(result.o)(.text+0xa5d): In function `ZNK4pqxx6result9GetIsNullEmj':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:813: undefined reference to `PQgetisnull'
c:/mingw/local/lib/libpqxx.a(result.o)(.text+0xc9c): In function `ZNK4pqxx6result13errorpositionEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:813: undefined reference to `PQresultErrorField'
c:/mingw/local/lib/libpqxx.a(result.o)(.text+0xd63): In function `ZNK4pqxx6result7columnsEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:813: undefined reference to `PQnfields'
c:/mingw/local/lib/libpqxx.a(result.o)(.text+0x10fd): In function `ZNK4pqxx6result13column_numberEPKc':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:813: undefined reference to `PQfnumber'
c:/mingw/local/lib/libpqxx.a(result.o)(.text+0x1612): In function `ZNK4pqxx6result11column_nameEj':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:813: undefined reference to `PQfname'
c:/mingw/local/lib/libpqxx.a(result.o)(.text+0x20f7): In function `ZNK4pqxx6result12column_tableEj':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:813: undefined reference to `PQftable'
c:/mingw/local/lib/libpqxx.a(result.o)(.text+0x2803): In function `ZNK4pqxx6result11column_typeEj':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:813: undefined reference to `PQftype'
c:/mingw/local/lib/libpqxx.a(result.o)(.text+0x2cdf): In function `ZNK4pqxx6result12inserted_oidEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:813: undefined reference to `PQoidValue'
c:/mingw/local/lib/libpqxx.a(result.o)(.text+0x2ed9): In function `ZNK4pqxx6result11StatusErrorEv':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:813: undefined reference to `PQresultStatus'
c:/mingw/local/lib/libpqxx.a(result.o)(.text+0x2f0a):C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:813: undefined reference to `PQresultStatus'
c:/mingw/local/lib/libpqxx.a(result.o)(.text+0x311b):C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:813: undefined reference to `PQresultErrorMessage'
c:/mingw/local/lib/libpqxx.a(result.o)(.text+0xa2d): In function `ZNK4pqxx6result8GetValueEmj':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:813: undefined reference to `PQgetvalue'
c:/mingw/local/lib/libpqxx.a(result.o)(.text+0xa7d): In function `ZNK4pqxx6result9GetLengthEmj':
C:/msys/1.0/local/src/libpqxx-2.6.8/src/../include/pqxx/util.hxx:813: undefined reference to `PQgetlength'
collect2: ld returned 1 exit status
Wenn ich mir den Inhalt der statischen Bibliotheken libpqxx.a mit ...

Code: Alles auswählen

ar vt /mingw/local/lib/libpqxx.a
... anzeigen lasse, dann wird folgendes ausgegeben:

Code: Alles auswählen

rw-rw-rw- 0/0 203837 Oct 06 20:20 2006 binarystring.o
rw-rw-rw- 0/0 405316 Oct 06 20:20 2006 cachedresult.o
rw-rw-rw- 0/0 1550216 Oct 06 20:20 2006 connection_base.o
rw-rw-rw- 0/0 323710 Oct 06 20:20 2006 connection.o
rw-rw-rw- 0/0 549027 Oct 06 20:21 2006 cursor.o
rw-rw-rw- 0/0 372477 Oct 06 20:21 2006 dbtransaction.o
rw-rw-rw- 0/0 174412 Oct 06 20:21 2006 except.o
rw-rw-rw- 0/0 425912 Oct 06 20:21 2006 largeobject.o
rw-rw-rw- 0/0 336973 Oct 06 20:21 2006 nontransaction.o
rw-rw-rw- 0/0 395462 Oct 06 20:21 2006 oldcursor.o
rw-rw-rw- 0/0 512634 Oct 06 20:21 2006 pipeline.o
rw-rw-rw- 0/0 446846 Oct 06 20:21 2006 prepared_statement.o
rw-rw-rw- 0/0 272717 Oct 06 20:21 2006 result.o
rw-rw-rw- 0/0 485182 Oct 06 20:21 2006 robusttransaction.o
rw-rw-rw- 0/0 372149 Oct 06 20:21 2006 subtransaction.o
rw-rw-rw- 0/0 380241 Oct 06 20:22 2006 tablereader.o
rw-rw-rw- 0/0 347195 Oct 06 20:22 2006 tablestream.o
rw-rw-rw- 0/0 362407 Oct 06 20:22 2006 tablewriter.o
rw-rw-rw- 0/0 356148 Oct 06 20:22 2006 transaction.o
rw-rw-rw- 0/0 552585 Oct 06 20:22 2006 transaction_base.o
rw-rw-rw- 0/0 1111427 Oct 06 20:22 2006 util.o
Analog für libpq.a mit dem Befehl ...

Code: Alles auswählen

ar vt /mingw/local/lib/libpq.a
... wird folgendes ausgegeben:

Code: Alles auswählen

rw-rw-rw- 0/0    570 Oct 06 16:50 2006 diydt.o
rw-rw-rw- 0/0    677 Oct 06 16:50 2006 diydh.o
rw-rw-rw- 0/0    619 Oct 06 16:50 2006 diyds00126.o
rw-rw-rw- 0/0    621 Oct 06 16:50 2006 diyds00125.o
rw-rw-rw- 0/0    623 Oct 06 16:50 2006 diyds00124.o
rw-rw-rw- 0/0    597 Oct 06 16:50 2006 diyds00123.o
rw-rw-rw- 0/0    607 Oct 06 16:50 2006 diyds00122.o
rw-rw-rw- 0/0    645 Oct 06 16:50 2006 diyds00121.o
rw-rw-rw- 0/0    609 Oct 06 16:50 2006 diyds00120.o
rw-rw-rw- 0/0    631 Oct 06 16:50 2006 diyds00119.o
rw-rw-rw- 0/0    631 Oct 06 16:50 2006 diyds00118.o
rw-rw-rw- 0/0    597 Oct 06 16:50 2006 diyds00117.o
rw-rw-rw- 0/0    599 Oct 06 16:50 2006 diyds00116.o
rw-rw-rw- 0/0    586 Oct 06 16:50 2006 diyds00115.o
rw-rw-rw- 0/0    586 Oct 06 16:50 2006 diyds00114.o
rw-rw-rw- 0/0    586 Oct 06 16:50 2006 diyds00113.o
rw-rw-rw- 0/0    597 Oct 06 16:50 2006 diyds00112.o
rw-rw-rw- 0/0    599 Oct 06 16:50 2006 diyds00111.o
rw-rw-rw- 0/0    599 Oct 06 16:50 2006 diyds00110.o
rw-rw-rw- 0/0    599 Oct 06 16:50 2006 diyds00109.o
rw-rw-rw- 0/0    597 Oct 06 16:50 2006 diyds00108.o
rw-rw-rw- 0/0    597 Oct 06 16:50 2006 diyds00107.o
rw-rw-rw- 0/0    619 Oct 06 16:50 2006 diyds00106.o
rw-rw-rw- 0/0    629 Oct 06 16:50 2006 diyds00105.o
rw-rw-rw- 0/0    623 Oct 06 16:50 2006 diyds00104.o
rw-rw-rw- 0/0    633 Oct 06 16:50 2006 diyds00103.o
rw-rw-rw- 0/0    635 Oct 06 16:50 2006 diyds00102.o
rw-rw-rw- 0/0    623 Oct 06 16:50 2006 diyds00101.o
rw-rw-rw- 0/0    643 Oct 06 16:50 2006 diyds00100.o
rw-rw-rw- 0/0    585 Oct 06 16:50 2006 diyds00099.o
rw-rw-rw- 0/0    599 Oct 06 16:50 2006 diyds00098.o
rw-rw-rw- 0/0    619 Oct 06 16:50 2006 diyds00097.o
rw-rw-rw- 0/0    580 Oct 06 16:50 2006 diyds00096.o
rw-rw-rw- 0/0    631 Oct 06 16:50 2006 diyds00095.o
rw-rw-rw- 0/0    586 Oct 06 16:50 2006 diyds00094.o
rw-rw-rw- 0/0    597 Oct 06 16:50 2006 diyds00093.o
rw-rw-rw- 0/0    597 Oct 06 16:50 2006 diyds00092.o
rw-rw-rw- 0/0    621 Oct 06 16:50 2006 diyds00091.o
rw-rw-rw- 0/0    609 Oct 06 16:50 2006 diyds00090.o
rw-rw-rw- 0/0    631 Oct 06 16:50 2006 diyds00089.o
rw-rw-rw- 0/0    633 Oct 06 16:50 2006 diyds00088.o
rw-rw-rw- 0/0    631 Oct 06 16:50 2006 diyds00087.o
rw-rw-rw- 0/0    631 Oct 06 16:50 2006 diyds00086.o
rw-rw-rw- 0/0    619 Oct 06 16:50 2006 diyds00085.o
rw-rw-rw- 0/0    631 Oct 06 16:50 2006 diyds00084.o
rw-rw-rw- 0/0    623 Oct 06 16:50 2006 diyds00083.o
rw-rw-rw- 0/0    607 Oct 06 16:50 2006 diyds00082.o
rw-rw-rw- 0/0    611 Oct 06 16:50 2006 diyds00081.o
rw-rw-rw- 0/0    617 Oct 06 16:50 2006 diyds00080.o
rw-rw-rw- 0/0    633 Oct 06 16:50 2006 diyds00079.o
rw-rw-rw- 0/0    629 Oct 06 16:50 2006 diyds00078.o
rw-rw-rw- 0/0    609 Oct 06 16:50 2006 diyds00077.o
rw-rw-rw- 0/0    607 Oct 06 16:50 2006 diyds00076.o
rw-rw-rw- 0/0    586 Oct 06 16:50 2006 diyds00075.o
rw-rw-rw- 0/0    607 Oct 06 16:50 2006 diyds00074.o
rw-rw-rw- 0/0    619 Oct 06 16:50 2006 diyds00073.o
rw-rw-rw- 0/0    633 Oct 06 16:50 2006 diyds00072.o
rw-rw-rw- 0/0    607 Oct 06 16:50 2006 diyds00071.o
rw-rw-rw- 0/0    599 Oct 06 16:50 2006 diyds00070.o
rw-rw-rw- 0/0    609 Oct 06 16:50 2006 diyds00069.o
rw-rw-rw- 0/0    611 Oct 06 16:50 2006 diyds00068.o
rw-rw-rw- 0/0    623 Oct 06 16:50 2006 diyds00067.o
rw-rw-rw- 0/0    611 Oct 06 16:50 2006 diyds00066.o
rw-rw-rw- 0/0    586 Oct 06 16:50 2006 diyds00065.o
rw-rw-rw- 0/0    599 Oct 06 16:50 2006 diyds00064.o
rw-rw-rw- 0/0    585 Oct 06 16:50 2006 diyds00063.o
rw-rw-rw- 0/0    585 Oct 06 16:50 2006 diyds00062.o
rw-rw-rw- 0/0    623 Oct 06 16:50 2006 diyds00061.o
rw-rw-rw- 0/0    599 Oct 06 16:50 2006 diyds00060.o
rw-rw-rw- 0/0    605 Oct 06 16:50 2006 diyds00059.o
rw-rw-rw- 0/0    607 Oct 06 16:50 2006 diyds00058.o
rw-rw-rw- 0/0    599 Oct 06 16:50 2006 diyds00057.o
rw-rw-rw- 0/0    605 Oct 06 16:50 2006 diyds00056.o
rw-rw-rw- 0/0    599 Oct 06 16:50 2006 diyds00055.o
rw-rw-rw- 0/0    586 Oct 06 16:50 2006 diyds00054.o
rw-rw-rw- 0/0    631 Oct 06 16:50 2006 diyds00053.o
rw-rw-rw- 0/0    619 Oct 06 16:50 2006 diyds00052.o
rw-rw-rw- 0/0    597 Oct 06 16:50 2006 diyds00051.o
rw-rw-rw- 0/0    599 Oct 06 16:50 2006 diyds00050.o
rw-rw-rw- 0/0    585 Oct 06 16:50 2006 diyds00049.o
rw-rw-rw- 0/0    605 Oct 06 16:50 2006 diyds00048.o
rw-rw-rw- 0/0    597 Oct 06 16:50 2006 diyds00047.o
rw-rw-rw- 0/0    617 Oct 06 16:50 2006 diyds00046.o
rw-rw-rw- 0/0    599 Oct 06 16:50 2006 diyds00045.o
rw-rw-rw- 0/0    607 Oct 06 16:50 2006 diyds00044.o
rw-rw-rw- 0/0    607 Oct 06 16:50 2006 diyds00043.o
rw-rw-rw- 0/0    607 Oct 06 16:50 2006 diyds00042.o
rw-rw-rw- 0/0    611 Oct 06 16:50 2006 diyds00041.o
rw-rw-rw- 0/0    607 Oct 06 16:50 2006 diyds00040.o
rw-rw-rw- 0/0    586 Oct 06 16:50 2006 diyds00039.o
rw-rw-rw- 0/0    607 Oct 06 16:50 2006 diyds00038.o
rw-rw-rw- 0/0    597 Oct 06 16:50 2006 diyds00037.o
rw-rw-rw- 0/0    586 Oct 06 16:50 2006 diyds00036.o
rw-rw-rw- 0/0    599 Oct 06 16:50 2006 diyds00035.o
rw-rw-rw- 0/0    609 Oct 06 16:50 2006 diyds00034.o
rw-rw-rw- 0/0    609 Oct 06 16:50 2006 diyds00033.o
rw-rw-rw- 0/0    599 Oct 06 16:50 2006 diyds00032.o
rw-rw-rw- 0/0    586 Oct 06 16:50 2006 diyds00031.o
rw-rw-rw- 0/0    579 Oct 06 16:50 2006 diyds00030.o
rw-rw-rw- 0/0    585 Oct 06 16:50 2006 diyds00029.o
rw-rw-rw- 0/0    586 Oct 06 16:50 2006 diyds00028.o
rw-rw-rw- 0/0    597 Oct 06 16:50 2006 diyds00027.o
rw-rw-rw- 0/0    599 Oct 06 16:50 2006 diyds00026.o
rw-rw-rw- 0/0    617 Oct 06 16:50 2006 diyds00025.o
rw-rw-rw- 0/0    609 Oct 06 16:50 2006 diyds00024.o
rw-rw-rw- 0/0    585 Oct 06 16:50 2006 diyds00023.o
rw-rw-rw- 0/0    629 Oct 06 16:50 2006 diyds00022.o
rw-rw-rw- 0/0    617 Oct 06 16:50 2006 diyds00021.o
rw-rw-rw- 0/0    623 Oct 06 16:50 2006 diyds00020.o
rw-rw-rw- 0/0    611 Oct 06 16:50 2006 diyds00019.o
rw-rw-rw- 0/0    617 Oct 06 16:50 2006 diyds00018.o
rw-rw-rw- 0/0    617 Oct 06 16:50 2006 diyds00017.o
rw-rw-rw- 0/0    599 Oct 06 16:50 2006 diyds00016.o
rw-rw-rw- 0/0    597 Oct 06 16:50 2006 diyds00015.o
rw-rw-rw- 0/0    619 Oct 06 16:50 2006 diyds00014.o
rw-rw-rw- 0/0    579 Oct 06 16:50 2006 diyds00013.o
rw-rw-rw- 0/0    617 Oct 06 16:50 2006 diyds00012.o
rw-rw-rw- 0/0    617 Oct 06 16:50 2006 diyds00011.o
rw-rw-rw- 0/0    607 Oct 06 16:50 2006 diyds00010.o
rw-rw-rw- 0/0    617 Oct 06 16:50 2006 diyds00009.o
rw-rw-rw- 0/0    611 Oct 06 16:50 2006 diyds00008.o
rw-rw-rw- 0/0    617 Oct 06 16:50 2006 diyds00007.o
rw-rw-rw- 0/0    607 Oct 06 16:50 2006 diyds00006.o
rw-rw-rw- 0/0    607 Oct 06 16:50 2006 diyds00005.o
rw-rw-rw- 0/0    621 Oct 06 16:50 2006 diyds00004.o
rw-rw-rw- 0/0    586 Oct 06 16:50 2006 diyds00003.o
rw-rw-rw- 0/0    597 Oct 06 16:50 2006 diyds00002.o
rw-rw-rw- 0/0    617 Oct 06 16:50 2006 diyds00001.o
rw-rw-rw- 0/0    609 Oct 06 16:50 2006 diyds00000.o
Leider bin ich an dieser Stelle nun mit meinem Latein am Ende. :(

Und da sich das ganze Problem jetzt als völlig Qt-frei darstellt, ist es ohnehin "off-topic" und somit in diesem Forum fehl am Platz - Asche auf mein Haupt.

Ein letztes Anliegen: kann mir jemand einen Tipp geben, in welches Forum mein Thema reinpassen würde?
Gruss, Martin
Antworten