【发布时间】:2018-02-28 17:14:42
【问题描述】:
我试图在一个更大的项目中使用两个旧的(和不同的)usb 库,方法是将它们封装到自己的命名空间中,如下所示:
namespace usbA {
#include "/msp430/usb.h"
}
namespace usbB {
#include "/cypress/usb.h"
}
这显然会导致链接器错误,因为实际库中的名称没有像函数调用那样使用命名空间进行修饰。 这可以在不编辑库代码的情况下解决吗? 根据其他一些海报的答案,这是无法做到的。这就引出了一个问题,那么命名空间有什么用?如果我必须进入并修改库源代码,我也可以在每个函数前加上“usbA_”而不是使用命名空间。它同样不灵活。
【问题讨论】:
-
您可以使用
objcopy和--redefine-sym之类的工具来重命名.so中的例程。我对 Windows 符号重新映射不够熟悉,无法在该区域提供选项。
标签: c++ header namespaces