在Unix中,我有三个主要文件。其中一个是图书馆,另一个是程序。
MyLib.c
和MyLib.h
是图书馆。main.c
是该计划。 在MyLib.h
我有一个声明(extern int Variable;
)。当我尝试在Variable
中使用main.c
时我不能。我当然在MyLib.h
和MyLib.c
中添加了main.c
,我也将它们链接起来。无论如何,main.c
中都无法识别变量。
如何在链接程序时获取变量?
答案 0 :(得分:30)
Variable
。我会在MyLib.c
中将其声明为全局变量,然后仅在extern
中将其声明为main.c
。
正在发生的事情是,对于MyLib.c
和main.c
,编译器被告知Variable
存在并且是int
,但它在其他地方( extern
)。哪个好,但是它必须实际上在其他地方,当你的链接器试图将所有文件链接在一起时,它找不到Variable
实际上在任何地方,所以它告诉你它不存在
试试这个:
MyLib.c:
int Variable;
MyLib.h:
extern int Variable;
main.c中:
#include "MyLib.h"
int main(void)
{
Variable = 10;
printf("%d\n", Variable);
return 0;
}