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 Dateinoch 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/libBuilding 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