我一直在为iOS构建游戏应用程序。该应用程序运行得相当不错,但我今天做了一个相当大的重组,以便更加模型化 - 视图 - 控制器“兼容”。
我用C ++构建了主游戏引擎,但使用Objective-C来管理viewControllers,视图等。
现在,当我编译项目时,我在链接阶段遇到错误。详情如下:
ld:/Users/Dan/Library/Developer/Xcode/DerivedData/BlackHoles-exrlidtstxzdtsbyjghgquhlsqul/Build/Intermediates/BlackHoles.build/Debug-iphonesimulator/BlackHoles.build/Objects-中的重复符号ApplicationEngine :: OnFingerUp(Vector2) normal / i386 / ApplicationEngine.o和/Users/Dan/Library/Developer/Xcode/DerivedData/BlackHoles-exrlidtstxzdtsbyjghgquhlsqul/Build/Intermediates/BlackHoles.build/Debug-iphonesimulator/BlackHoles.build/Objects-normal/i386/AppDelegate.o对于架构i386 collect2:ld返回1退出状态 命令/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2因退出代码1而失败
OnFingerUp是我的C ++ ApplicationEngine中的一个函数,可以从viewController调用。
问题可能是由我的#includes / #imports中的一些混淆引起的?
我的AppDelegate文件需要#include一个MainViewController文件来设置初始的viewController。反过来,MainViewController #include ApplicationEngine文件来实例化该类。 ApplicationEngine包含OnFingerUp方法。然后,当我得到触摸输入时,从MainViewController调用OnFingerUp方法。这个包含序列可能导致重复吗?
我注意到如果我暂时从应用程序中删除OnFingerUp方法,那么我在ApplicationEngine中的另一个方法遇到了同样的问题。
单个文件编译时没有任何错误或警告。我也尝试过Clean All并重新编译,但没有快乐。
有没有人对如何解决问题有任何建议?谢谢,Dan。
答案 0 :(得分:3)
我可以想到3个原因:1)意外地#including .cpp文件,2)忘记头文件中的#ifndef guards,3)在头文件中写入方法定义时忘记内联。