我想在我已经编写的C++程序中使用this code for the Porter stemming algorithm。我按照文件末尾附近的说明将代码作为单独的模块使用。我创建了一个文件,stem.c,定义后结束,并且具有在C++程序中使用C函数; “多重定义”错误
extern int stem(char * p, int i, int j) ...
它好工作在Xcode,但它不为我在Unix上用gcc 4.1.1工作 - 因为平时我没有怪在两者之间移动的问题。我得到的错误
LD:致命:符号`干(字符*,INT,INT)”是多重定义: (文件/var/tmp//ccrWWlnb.o类型= FUNC;文件/ var /tmp//cc6rUXka.o type = FUNC); ld:fatal:文件处理错误。没有输出写入群集
我在网上看过,似乎有很多事情我可能有错,但我不知道什么头文件,外部“C”等组合工作。
你是否以某种方式#在其他文件中包含C文件?你用什么命令行来编译/链接你的程序? – nos 2010-05-02 19:11:36
是的,在一个函数的.cpp文件中,我有#include“stem.c”。使用g ++编译Whatever.cpp Anotherthing.cpp stem.c -o myprogram。 – eom 2010-05-02 19:13:27
那是你的问题!顺便说一下,这与混合使用C和C++没有任何关系。同样的事情会发生,如果你有'#包含一个.cpp文件在另一个。 – 2010-05-02 19:19:33