0

我的游戏中有一个更新函数,其中包含以下代码:

void DrawMiniFPSCounter();
DrawMiniFPSCounter();

DrawMiniFPSCounter()函数在名为 miniFPSCounter.cpp 的文件中声明,该文件是构建目标的一部分(我使用的是 Xcode)。构建时,我收到一个链接器错误,提示DrawMiniFPSCounter找不到该符号。我已尝试删除上面的声明并仅调用DrawMiniFPSCounter(),但这会导致编译期间出现“未找到符号”错误。为什么链接器很难找到这个符号?这与项目中解析符号的顺序有关吗?

编辑:我nm hrMiniFPSCounter.o | grep Draw在构建目录中运行命令,并得到以下输出:

00000000 T __Z15DrawMiniCounteriiiii
0002d040 S __Z15DrawMiniCounteriiiii.eh
00000a00 T __Z18DrawMiniFPSCounterv
0002d148 S __Z18DrawMiniFPSCounterv.eh
00000560 t __ZL9DrawDigitiiib
0002d128 s __ZL9DrawDigitiiib.eh

这是正常的吗?为什么函数名称末尾有多余的字符?

4

1 回答 1

1

根据我的经验,最常见的“错误”:

  1. 文件(真的)被编译了吗?
  2. 它(真的)是否正确链接?
  3. 你给这个函数起你认为你做的名字了吗?
  4. 新的命名空间问题:)

您确定 miniFPSCounter.cpp 文件已编译(/已以正确的方式包含在项目中)吗?我猜您遇到的情况可能是由一些不同的事情引起的,但是由于缺乏更多信息,我想说:尝试确保正在编译 cpp 文件(可能会引入一些语法错误,从而导致编译如果确实已编译,则会出错)并且当您确定这一点时,您可以开始检查其他内容(例如它是否正确链接等)

编辑:将清单放在首位。

于 2012-10-15T09:14:34.663 回答