Am Fre, 2002-10-25 um 02.39 schrieb Martin Knipper:
Hi zusammen, ein Linkerproblem macht mich wahrsinnig.
[...] #include
#include char *crypt(const char *key, const char *salt); [..] printf("%s\n",crypt(argv[1],argv[2])); [..] Kompiliere ich obiges nun mit gcc -o crypt-word cr.c -lcrypt klappt es wunderbar.
Ein "g++ -o crypt-word cr.c -lcrypt" liefert mir /tmp/ccVn9pCl.o: In function `main': /tmp/ccVn9pCl.o(.text+0x3c): undefined reference to `crypt(char const *, char const *)' collect2: ld returned 1 exit status Womit g++ recht hat: Stichwort Mangling.
Wie kann ich mit C++ gegen die C Bibliothek linken ? Statt des lokalen Prototypen, der, von einem C++ Compiler interpretiert, eine C++-Funktion namens
char *crypt(const char *, const char *);
deklariert, den richtigen Header einbinden:
#include
Wenn jemand die Antwort kennt, wäre ich sehr dankbar über eine Aufklärung. Habe das Problem leider schon desöfteren gehabt :( Stichworte: Mangling, extern "C", siehe auch man c++filt.
Ralf