我有这两个命名空间,每个命名空间都包含一个同名的函数,比如
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/