在C中链接外部变量

Jos*_*ado 15 c extern

在Unix中,我有三个主要文件.其中一个是图书馆,另一个是程序.

  • MyLib.c并且MyLib.h是图书馆.
  • main.c 是程序.

MyLib.h我有一个声明(extern int Variable;).当我尝试使用Variablemain.c我不能.当然,我已经包含MyLib.hMyLib.cmain.c,我也将它们链接.无论如何,该变量未被识别main.c.

如何在链接程序时获取变量?

Chr*_*utz 31

Variable必须在某处定义.我将宣布它作为一个全局变量MyLib.c,然后只把它声明为externmain.c.

正在发生的事情是,对于双方MyLib.cmain.c,编译器被告知Variable存在并且是一个int,但它的其他地方(extern).哪个好,但是它必须实际上在其他地方,并且当你的链接器试图将所有文件链接在一起时,它Variable实际上找不到任何地方,所以它告诉你它不存在.

试试这个:

MyLib.c:

int Variable;
Run Code Online (Sandbox Code Playgroud)

MyLib.h:

extern int Variable;
Run Code Online (Sandbox Code Playgroud)

main.c中:

#include "MyLib.h"

int main(void)
{
    Variable = 10;
    printf("%d\n", Variable);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)