我正在使用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大师可以提供的建议,这可能会让我找到解决方案。感谢。
答案 0 :(得分:6)
这不是头文件问题。您需要链接包含g_entities定义的对象。这可以是目标文件或库。有时,链接事物的顺序也会产生影响。
你知道g_entities定义在哪里吗?其他代码引用此符号,它如何解决它?它与之相关的是什么?
答案 1 :(得分:1)
是因为实际定义g_entities(没有extern)的模块在链接器的输入集中缺失(并且很可能是引用它的所有其他模块)?