在 C 中链接外部变量
在 Unix 中,我有三个主要文件。 其中一个是库,另一个是程序。
MyLib.c
和MyLib.h
是库。main.c
是程序。
在 MyLib.h
中,我有一个声明 (extern int Variable;
)。 当我尝试在 main.c
中使用 Variable
时,我不能。 当然,我已将 MyLib.h
包含在 MyLib.c
和 main.c
中,并且我也链接了它们。 无论如何,该变量在 main.c
中无法识别。
当我链接程序时如何获得可用的变量?
In Unix, I have got three main files. One of them is a library and the other one is a program.
MyLib.c
andMyLib.h
are the library.main.c
is the program.
In MyLib.h
I have a declaration (extern int Variable;
). When I try to use Variable
in main.c
I cannot. Of course I have included MyLib.h
in MyLib.c
and in main.c
, and I link them too. Anyway the variable is not recognized in main.c
.
How do I get the variable available when I link the program?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
变量
必须在某处定义。 我会在MyLib.c
中将其声明为全局变量,然后仅在main.c
中将其声明为extern
。发生的情况是,对于
MyLib.c
和main.c
来说,编译器被告知Variable
存在并且是一个int
,但它在其他地方 (extern
)。 这很好,但它实际上必须在其他地方,当你的链接器尝试将所有文件链接在一起时,它找不到实际上在任何地方的Variable
,所以它告诉你它不存在不存在。试试这个:
MyLib.c:
MyLib.h:
main.c:
Variable
must be defined somewhere. I would declare it as a global variable inMyLib.c
, and then only declare it asextern
inmain.c
.What is happening is that, for both
MyLib.c
andmain.c
, the compiler is being told thatVariable
exists and is anint
, but that it's somewhere else (extern
). Which is fine, but then it has to actually be somewhere else, and when your linker tries to link all the files together, it can't findVariable
actually being anywhere, so it tells you that it doesn't exist.Try this:
MyLib.c:
MyLib.h:
main.c: