Utiliser la fonction C dans un programme C++; “multiplier” erreur

Je suis en train d'utiliser ce code pour le Porter découlant de l'algorithme dans un programme C++ je l'ai déjà écrit. J'ai suivi les instructions à la proximité de la fin du fichier pour l'utilisation du code dans un module séparé. J'ai créé un fichier, la tige.c, qui se termine après la définition et l'a

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

Il a bien fonctionné dans Xcode, mais il ne fonctionne pas pour moi sur Unix avec gcc 4.1.1--étrange car d'habitude j'ai aucun problème entre les deux. Je reçois le message d'erreur

ld: fatal: symbole de la tige(char*, int, int)' est de multiplier définie par:
(fichier /var/tmp//ccrWWlnb.o type=FUNC; fichier /var/tmp//cc6rUXka.o type=FUNC);
ld: fatal: Fichier de traitement des erreurs. Pas de sortie écrite de cluster

J'ai regardé en ligne et il semble que il ya beaucoup de choses que je pourrais avoir tort, mais je ne suis pas sûr de ce que la combinaison d'un fichier d'en-tête, extern "C", etc. serait de travailler.

Êtes-vous en quelque sorte #comprennent avec que C fichier dans un autre fichier ? Quelles sont les lignes de commande que vous utilisez pour compiler et lier votre programme ?
Oui, en une seule fonction .fichier cpp j'ai #include "de la tige.c". Compilation avec g++ Whatever.cpp Anotherthing.cpp de la tige.c -o myprogram.
Et bien c'est votre problème! Par ailleurs, cela n'a rien à voir avec le mélange de C et de C++. La même chose pourrait se produire si vous avez eu #include ed .fichier cpp à l'intérieur de l'autre.

OriginalL'auteur eom | 2010-05-02