【发布时间】:2010-05-02 19:04:50
【问题描述】:
我正在尝试在我已经编写的 C++ 程序中使用this code for the Porter stemming algorithm。我按照文件末尾附近的说明将代码用作单独的模块。我创建了一个文件stem.c,它在定义之后结束并具有
extern int stem(char * p, int i, int j) ...
它在 Xcode 中运行良好,但在带有 gcc 4.1.1 的 Unix 上对我不起作用——奇怪,因为通常我在两者之间移动没有问题。我得到了错误
ld: 致命的:符号 `stem(char*, int, int)' 是多重定义的: (文件/var/tmp//ccrWWlnb.o 类型=FUNC;文件/var/tmp//cc6rUXka.o 类型=FUNC); ld:致命:文件处理错误。没有输出写入集群
我在网上查了一下,似乎有很多地方我可能做错了,但我不确定头文件、外部“C”等的哪种组合会起作用。
【问题讨论】:
-
您是否以某种方式将 C 文件包含在其他文件中?您用来编译/链接程序的命令行是什么?
-
是的,在一个函数的 .cpp 文件中,我有 #include "stem.c"。用 g++ 编译 What.cpp Anotherthing.cpp stem.c -o myprogram.
-
那是你的问题!顺便说一句,这与混合 C 和 C++ 没有任何关系。如果您有
#include在另一个中编辑一个 .cpp 文件,也会发生同样的事情。
标签: c++ c include compiler-errors