Verwenden Sie C-Funktion in C++ - Programms; "multiply-defined" - Fehler

Ich versuche, mit dieser code für das Porter-stemming-Algorithmus in einem C++ - Programm habe ich bereits geschrieben. Ich folgte den Anweisungen in der Nähe des Ende der Datei mit dem code, als separates Modul. Ich habe eine Datei, Stiel.c, das endet nach der definition und hat

extern int stem(char * p, int i, int j) ...

Lief es in Xcode, aber es funktioniert nicht für mich auf Unix mit gcc 4.1.1--seltsam, denn normalerweise habe ich kein problem, bewegen Sie sich zwischen die beiden. Ich bekomme die Fehlermeldung

ld: fatal: symbol `stem(char*, int, int)' ist mehrfach definiert:
(Datei /var/tmp//ccrWWlnb.o-Typ=FUNC; Datei /var/tmp//cc6rUXka.o-Typ=FUNC);
ld: fatal: File Verarbeitung von Fehlern. Keine Ausgabe geschrieben cluster

Habe ich online geschaut, und es scheint, wie es gibt viele Dinge, die ich könnte falsch liegen, aber ich bin mir nicht sicher, welche Kombination aus einer header-Datei extern "C" usw.. funktionieren würde.

  • Sind Sie irgendwie #einbauen ' Ing, dass die C-Datei in andere Dateien ? Was ist der Befehl Linien, die Sie verwenden, um Compiler - /link-Ihr Programm ?
  • Ja, in einer Funktion ist .cpp-Datei habe ich #include "stammen.c". Kompilieren mit g++ Whatever.cpp Anotherthing.cpp Stamm.c -o myprogram.
  • Nun, es ist Ihr problem! Übrigens, dies hat nichts zu tun mit dem mischen von C und C++. Das gleiche würde passieren, wenn Sie hatte #include ed ein .cpp-Datei in eine andere.
InformationsquelleAutor eom | 2010-05-02
Schreibe einen Kommentar