次のテストプログラムを作成しました
int proc1();
extern int globalvar;
int func1 ()
{
return globalvar + 1;
}
int func2()
{
return proc1()+3;
}
int main()
{
return 0;
}
ご覧のとおり、このプログラムは何もしていません。ただし、コンパイル中に、これらがエントリポイント関数から参照されないという事実にもかかわらず、globalvar
およびのリンカーエラーに直面しました。Windows(を使用)とLinux(を使用)の両方で問題に直面しました。int proc1()
main
cl
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