Gab*_*yer 6 c++ opencv namespaces
我正在使用OpenCV,我想将整个库放在它自己的命名空间中.我环顾四周但没找到答案......
你能不修改库源代码吗?如果那么怎么样?
原则上,您可以编写一个程序来解析库的符号导出表,并更改其中的符号名称。当然,您仍然需要更改标题。
也就是说,编写一个简单的脚本来添加命名空间标签并重新编译库会容易得多。
一般的答案是你不能,但是你可以采取一些技巧。
例如,binutils中的objcopy能够复制对象,但可以使用--prefix-symbols标志在每个符号上添加前缀。为事物添加前缀通常是穷人的名称空间,并且是避免冲突的“好”方法。
用法非常简单,如下所示:
objcopy --prefix-symbols "__mylib_" object.o new_object.o
Run Code Online (Sandbox Code Playgroud)
注意:是的,它也适用于 .so 文件。
注意 2:这将完全破坏 C++ 名称修饰,因此只能在具有 C 风格 API 的库上尝试此操作。由于您正在谈论在没有名称空间的地方添加名称空间,因此我认为情况就是如此。