CDT Eclipse und PostgreSql-Pfad...



  • Bin gerade dabei das Paket zusammen zum laufen zu bringen, leider funktionierts noch nicht ganz.

    CDT läuft, jedoch mit PostGreSql gibts Probleme 😞

    Wo lege ich den Pfad "C:/Programme/PostgreSQL/8.1/include" für den Header "libpq-fe.h" für den Compiler fest?!

    "gcc -O0 -g3 -Wall -c -fmessage-length=0 -IC:/Programme/PostgreSQL/8.1/include -omain.o ../main.c"
    hab ichs zwar geschafft, aber es kommen trotzdem Fehler ...

    main.c:13: undefined reference to _PQfinish' main.c:38: undefined reference to_PQconnectdb'

    gruß
    Dominik



  • Der Include-Pfad dürfte richtig sein, jetzt fehlt allerdings noch die Library dazu. Diese müsstest du noch an deinen Compiler mitgeben (bin mir bei den Parametern nicht ganz sicher, vermutlich "-lname.lib").



  • danke für deine Antwort.

    ich habe bei Properties / GCC C Linker / Libaries
    "C:\Programme\PostgreSQL\8.1\include" den Libary-Search-Pfad angegeben, jetzt komme ich zwar weiter, aber schon die nächste fehlende Datei 😞

    noch ein Tipp?

    **** Full rebuild of configuration Debug for project control ****
    
    make -k clean all 
    rm -rf  ./main.o  ./main.d control.exe
    
    Building file: ../main.c
    Invoking: GCC C Compiler
    gcc -O0 -g3 -Wall -c -fmessage-length=0 -omain.o ../main.c
    In file included from ../main.c:8:[B]
    ../libpq-fe.h:29:26: postgres_ext.h: No such file or directory
    In file included from ../main.c:8:[/B]
    ../libpq-fe.h:317: warning: type defaults to `int' in declaration of `Oid'
    ../libpq-fe.h:317: error: parse error before '*' token
    ../libpq-fe.h:324: warning: type defaults to `int' in declaration of `Oid'
    ../libpq-fe.h:324: error: parse error before '*' token
    ../libpq-fe.h:338: warning: type defaults to `int' in declaration of `Oid'
    ../libpq-fe.h:338: error: parse error before '*' token
    ../libpq-fe.h:345: warning: type defaults to `int' in declaration of `Oid'
    ../libpq-fe.h:345: error: parse error before '*' token
    ../libpq-fe.h:403: error: parse error before "PQftable"
    ../libpq-fe.h:403: warning: type defaults to `int' in declaration of `PQftable'
    ../libpq-fe.h:403: warning: data definition has no type or storage class
    ../libpq-fe.h:406: error: parse error before "PQftype"
    ../libpq-fe.h:406: warning: type defaults to `int' in declaration of `PQftype'
    ../libpq-fe.h:406: warning: data definition has no type or storage class
    ../libpq-fe.h:411: error: parse error before "PQoidValue"
    ../libpq-fe.h:411: warning: type defaults to `int' in declaration of `PQoidValue'
    ../libpq-fe.h:411: warning: data definition has no type or storage class
    ../libpq-fe.h:475: error: parse error before "Oid"
    ../libpq-fe.h:480: error: parse error before "lo_creat"
    ../libpq-fe.h:480: warning: type defaults to `int' in declaration of `lo_creat'
    ../libpq-fe.h:480: warning: data definition has no type or storage class
    ../libpq-fe.h:481: error: parse error before "lo_create"
    ../libpq-fe.h:481: error: parse error before "Oid"
    ../libpq-fe.h:481: warning: type defaults to `int' in declaration of `lo_create'
    ../libpq-fe.h:481: warning: data definition has no type or storage class
    ../libpq-fe.h:483: error: parse error before "Oid"
    ../libpq-fe.h:484: error: parse error before "lo_import"
    ../libpq-fe.h:484: warning: type defaults to `int' in declaration of `lo_import'
    ../libpq-fe.h:484: warning: data definition has no type or storage class
    ../libpq-fe.h:485: error: parse error before "Oid"
    ../main.c:118:2: warning: no newline at end of file
    make: *** [main.o] Error 1
    make: Target `all' not remade because of errors.
    Build complete for project control
    


  • Du hast ZWEI Pfade für deine Bibliothek: der Include-Pfad (dort stehen die Header) wird vom Compiler/Präprozessor benötigt, um die Funktionsdeklarationen wiederzufinden; den Bibliothekspfad (dort findest du die passenden ".LIB" Dateien) benötigt der Linker, um zu den Funktionsnamen die Definition zu finden.



  • danke schön.

    bin jetzt zwar bissl weiter, aber so ganz klappen tuts immernoch nicht. 😢

    http://www.postgresql.org/files/documentation/books/pghandbuch/html/libpq-build.html sagt mir, dass
    "/usr/bin/ld: cannot find -lpq"
    Dies bedeutet, dass Sie die -L-Option vergessen haben oder nicht das richtige Verzeichnis angegeben haben.

    Da ich ja -lpq -L angegeben habe, muss der Pfad falsch sein.
    Zu meinem Entwicklungssystem: Eclipse mit CDT-Plugin und mit cygwin (wegen Compiler).
    Wie muss ich die Pfade angeben?

    Win: c:/Programme/PostgreSQL/8.1/lib
    mit Cygwin: /cygdrive/c/Programme/PostgreSQL/8.1/lib

    Building file: ../main.c
    Invoking: GCC C Compiler
    gcc -IC:\Programme\PostgreSQL\8.1\include -O0 -g3 -Wall -c -fmessage-length=0 -omain.o ../main.c
    ../main.c: In function `exit_nicely':
    ../main.c:14: warning: implicit declaration of function `exit'
    Finished building: ../main.c
    
    Building target: control.exe
    Invoking: GCC C Linker
    gcc -LC:/Programme/PostgreSQL/8.1/lib -lpq -o control.exe ./main.o
    /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: cannot find -lpq
    collect2: ld returned 1 exit status
    make: *** [control.exe] Error 1
    make: Target `all' not remade because of errors.
    Build complete for project control
    

Anmelden zum Antworten