c++ - 导出两个命名空间中的重复函数 (C++)

标签 c++ function namespaces export duplicates

我有这两个命名空间,每个命名空间都包含一个同名的函数,比如

namespace group1 {
    void add(int arg) {
    }
}

namespace group2 {
    void add(bool arg) {
    }
}

我在标题中用声明指定了它

#ifdef __cplusplus 
    extern "C" {
#endif
    // My namespaces and functions prototypes here
#ifdef __cplusplus 
    }
#endif

我正在尝试使用 GCC 将它们导出到 DLL 中。我收到有关它们之间冲突的警告,因为它们具有相同的名称,然后在链接时出错。我认为根据参数,目标文件中的名称也被破坏了。我不知道链接器是否也关心命名空间。我怎么能让这个工作?谢谢。

最佳答案

如果这些是 C++ 函数,您必须删除 extern "C" 括号:

#ifdef __cplusplus 
    extern "C" {
#endif

#ifdef __cplusplus 
    }
#endif

extern "C" 告诉编译器“不要破坏这个名字”——但是(如您所说)您想要破坏。

关于c++ - 导出两个命名空间中的重复函数 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15121444/

相关文章:

c++ - 使用多线程迭代 vector (无数据共享或 vector 修改)

javascript - 我可以反过来从对象创建可调用函数吗?

javascript - 为什么在调用不带参数的函数时出现未定义错误?

php - DDD : Domain model namespaces convention

c++ - 全局命名空间好友类无法访问命名命名空间类的私有(private)成员

c++ - dynamic cast Entities 一个好的设计?

c++ - 多余的字符被添加到字符串

c++ - 在继承类 C++ 中重载 >>

c++函数while循环

php - 仅在 PHP DOM 中选择没有命名空间/前缀的节点?