hallo zusammen, ich habe heut versucht, die pcap library in einem C++ programm zu verwenden. leider ist es bei dem versuch geblieben, denn wenn ich versuche, das programm zu compilieren und linken, dann sagt mir der linker, daß er die pcap-funktionen nicht finden kann. es sieht also genauso aus, als würde ich die option "-lpcap" beim compiliern/linken nicht mit angeben. ich habe aber definitiv diese option dem gcc übergeben und bekomme trotzdem die linker-fehler. wenn ich das programm als C programm kompiliere und linke, funktioniert es. glücklicherweise hatte ich noch keine C++ spezifischen elemente verwendet, so daß ich dies austesten konnte. das funktioniert also dann als C programm, aber nicht als C++ prg. kann mir jemand sagen, womit das zusammenhängt ? liegt es vielleicht daran, daß die pcap library nur als folgende datei vorliegt: libpcap.a und nicht als libpcap.so eine weitere library, die ich verwende ist die pthread-library und bei dieser tauchen solche probleme nicht auf. mir fiel auf, daß diese lib sowohl als libpthread.a als auch als libpthread.so vorhanden ist und dachte mir, es könnte vielleicht damit zusammen- hängen. weiß jemand genauer darüber bescheid ? wenn das der grund ist, wie kann ich dann die pcap library in einem C++ programm verwenden ? vielen dank im voraus ;) oliver
Oliver Wegner wrote:
hallo zusammen,
ich habe heut versucht, die pcap library in einem C++ programm zu verwenden. leider ist es bei dem versuch geblieben, denn wenn ich versuche, das programm zu compilieren und linken, dann sagt mir der linker, daß er die pcap-funktionen nicht finden kann. es sieht also genauso aus, als würde ich die option "-lpcap" beim compiliern/linken nicht mit angeben. ich habe aber definitiv diese option dem gcc übergeben und bekomme trotzdem die linker-fehler. wenn ich das programm als C programm kompiliere und linke, funktioniert es.
Du must dem C++-Compiler mit "extern C" sagen ,das die Funktionen in libpcap C-Linkage ( also kein Name-Mangling) benutzen. Am einfachsten geht das in dem du schreibst: #ifdef __cplusplus extern "C" { #endif #include pcap.h #ifdef __cplusplus } #endif Wenn du sicher bist, das du das Programm nie wieder mit dem C-Compiler kompilieren willst, kann du die "#ifdef __cplusplus" und die #endif weglassen. -- Markus Kossmann markus.kossmann@inka.de
* Oliver Wegner [Mon, 05 Mar 2001 01:31:20 +0100]:
funktioniert es. glücklicherweise hatte ich noch keine C++ spezifischen elemente verwendet, so daß ich dies austesten konnte. das funktioniert also dann als C programm, aber nicht als C++ prg. kann mir jemand sagen, womit das zusammenhängt ?
<sarkasmus> Ich *liebe* solche Mails, weil alle relevante Info vorhanden ist. </sarkasmus> Da ich keine funktionierende Kristallkugel habe und auch nicht raten will: - Womit linkst du dein C++ Programm, mit gcc oder g++? - Wie wird gcc/g++ aufgerufen? - Welche Fehlermeldungen bekommst du? Mit obiger Info kann ich dir evtl. weiterhelfen. -- Penguins to save the dinosaurs -- Handelsblatt on Linux for S/390
participants (3)
-
Markus Kossmann
-
Oliver Wegner
-
Philipp Thomas