链接器剥离未使用的类

Linker stripping unused classes

本文关键字:未使用 剥离 链接      更新时间:2023-10-16

我正在做一个c++的跨平台项目,在IOS和Android下,我有以下情况:

我正在编写一个库,用于直接从描述它们的xml文件加载场景图形。这个库有一个基树节点类,它实现了所有的功能,使一个类可以通过它的名字来构造。然后实现其他树节点,所有这些节点都派生自这个基节点类。这种方法非常有效,但有一个问题。链接器"认为"我的一些类不会被使用,并将它们从库中剥离出来。我现在有一个讨厌的解决方案,有一个文件,其中包括所有现有的节点头,并在这个文件中的每个节点的一个实例正在创建和更改,以指示编译器/链接器,该类是真正被使用。

有谁知道一个好的设计模式,可以用来自动生成所需的所有类的实例吗?

我已经尝试创建宏放在类的cpp文件中,该文件创建给定类的静态实例,但是链接器仍然检测到这些静态实例永远不会被引用。

或者有一个链接器标志,可以用来告诉链接器不要剥离任何未使用的类?就像已经提到的:我正在Android (ndk 6.0)和IOS (xcode 4.2)上工作

这个问题不会成为我项目的一个亮点,但如果能在这里找到一个可接受的解决方案就太好了。

非局部变量的动态初始化是否具有静态存储是由实现定义的Duration在main的第一个语句之前执行。如果初始化延迟到某个时间点在main语句的第一个语句之后,它应该出现在任何函数或变量的第一次使用(3.2)之前与要初始化的变量在同一个翻译单元中定义。

因此,没有标准的方法来保证这些对象的构造,而是将它们全部列在一个特定的位置