我写了以下测试程序
int proc1();
extern int globalvar;
int func1 ()
{
return globalvar + 1;
}
int func2()
{
return proc1()+3;
}
int main()
{
return 0;
}
正如你所看到的,这个程序没有做任何事情。然而,在编译它时,我遇到了链接器错误,globalvar
尽管int proc1()
事实上这些不会被入口点函数引用main
。cl
我在 Windows(使用)和 Linux(使用)上都遇到了问题gcc
。
有没有办法指示编译器/链接器不要从入口点(在 cl、gcc 和 clang 上)链接这个未引用的全局变量和函数?
Windows 上的确切错误消息:
test.obj : error LNK2019: unresolved external symbol "int globalvar" (?globalvar@@3HA) referenced in function "int __cdecl func1(void)" (?func1@@YAHXZ)
test.obj : error LNK2019: unresolved external symbol "int __cdecl proc1(void)" (?proc1@@YAHXZ) referenced in function "int __cdecl func2(void)" (?func2@@YAHXZ)
test.exe : fatal error LNK1120: 2 unresolved externals