未定义的全局变量引用

时间:2013-04-22 00:38:58

标签: c global-variables extern

我正在使用C和Quake 3 / ioquake引擎。请注意,这不是特定于游戏引擎的问题,它纯粹是一种C语言查询。

g_entities是引擎中全局定义的变量。此变量也使用extern语句。

引擎中的许多其他.c文件调用此变量没有问题,但是当我从我的代码执行此操作时,我在编译时遇到undefined reference to g_entities链接器错误。

我的代码:

// get entity information for this bot (e.g. health etc)
gentity_t *entity;
entity = &g_entities[1];

制作时出错:

/home/george/Desktop/ioquake/ioquake-latest/ioquake3/code/botlib/be_ai_char.c:1196: undefined reference to `g_entities'

我将不胜感激任何C大师可以提供的建议,这可能会让我找到解决方案。感谢。

2 个答案:

答案 0 :(得分:6)

这不是头文件问题。您需要链接包含g_entities定义的对象。这可以是目标文件或库。有时,链接事物的顺序也会产生影响。

你知道g_entities定义在哪里吗?其他代码引用此符号,它如何解决它?它与之相关的是什么?

答案 1 :(得分:1)

是因为实际定义g_entities(没有extern)的模块在链接器的输入集中缺失(并且很可能是引用它的所有其他模块)?