我的游戏中有一个包含以下代码的更新功能:
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
这是正常的吗?为什么函数名称末尾的额外字符?
答案 0 :(得分:1)
根据我的经验,最常见的“错误”:
您确定编译了miniFPSCounter.cpp文件(/以正确的方式在项目中被包含在内)?我猜你所遇到的可能是由几个不同的东西造成的,但是由于缺乏更多信息,我会说:尝试确保编译cpp文件(可能会引入一些语法错误,这会导致编译错误,如果它确实编译),当你确定,你可以开始检查其他东西(例如它正确链接,等等)
编辑:将核对清单放在最上面。