我在C ++中遇到this article on dynamic linking。
我们可以创建一个C ++工厂,它将返回我们感兴趣的类的对象。
此外,我们应该在工厂的文件范围内创建一个静态对象,以便可以使用dlsym()
找到它。 (文章建议静态对象不要被命名。)
为什么静态对象没有名称损坏?
答案 0 :(得分:5)
名称修改是为了帮助解决重载的函数名而发明的。您可以使用相同的名称定义多个函数,仅在计数和参数类型方面有所不同。名称修改使链接器可以将这些函数解析为代码中的正确位置。
与函数名称不同,全局命名空间中的静态对象的名称不能重载,因此不需要对其进行重写。事实上,全局命名空间之外的对象名称已被修改。