我必须链接两个库,比如A和B.一些文件在两个库中都很常见。 所以,我在命名空间中声明库A中的函数,比如说abc。 因此,在A和B中,函数func如下所示:
[ in A]
namespace abc {
extern "C" void func();
}
[in B]
extern "C" void func();
在构建项目时,编译器抛出链接错误,说明函数func的多个定义。不是命名空间内的A中的函数func,还是extern“C”函数存在一些问题。如果有,那我怎么能区分它们呢?
答案 0 :(得分:25)
当您使用Extern“C”时,您将关闭名称修改,因此您丢失了命名空间信息,因为C没有这样的概念。这会导致重复定义。