C ++:命名空间内的Extern C函数

时间:2012-03-13 14:25:53

标签: c++ namespaces linker-errors extern

我必须链接两个库,比如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”函数存在一些问题。如果有,那我怎么能区分它们呢?

1 个答案:

答案 0 :(得分:25)

当您使用Extern“C”时,您将关闭名称修改,因此您丢失了命名空间信息,因为C没有这样的概念。这会导致重复定义。