我有一个等同于此的全局类:
class CUnref
{
public:
CUnref() : a(42), b(999)
{
}
virtual ~CUnref()
{
}
int a, b;
};
CUnref Unref;
我希望全局变量Unref
如果没有被引用,将从最终的可执行文件中删除。
在我的特定情况下,我有一组这样的全局帮助程序,以协助在单独的静态链接库中进行枚举< - >字符串转换。 This stackoverflow的答案似乎表明,在静态链接库的特定情况下,这些未使用的全局实例不应链接在最终的可执行文件中。检查生成的可执行文件显示实例和相关符号仍然存在..
删除虚函数使其从最终的可执行文件中消失(基本上是全局未引用的类POD),但我真的需要继承。我不执行任何副作用(例如分配内存)或其他任何东西,只是继承。
如何确保这些未引用的全局变量(非POD类型但没有副作用)未在最终可执行文件中链接?
编译器是visual studio 2012附带的任何内容。
答案 0 :(得分:0)
How to prevent VC++ 9 linker from linking unnecessary global variables?
提供的解决方案在msvc中标记带有__declspec(selectany)
的全局变量将使链接器在未被引用的情况下将其删除。