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

Dha*_*dra 16 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();
Run Code Online (Sandbox Code Playgroud)

在构建项目时,编译器抛出链接错误,说明函数func的多个定义.不是命名空间内的A中的函数func,还是extern"C"函数存在一些问题.如果有,那我怎么能区分它们呢?

rer*_*run 25

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