在Xcode中构建项目的链接阶段出现重复符号的问题

Issue with Duplicate symbol in link phase of project build in Xcode

本文关键字:段出现 问题 符号 链接 Xcode 构建 项目      更新时间:2023-10-16

我一直在为iOS开发一款游戏应用。应用程序工作得相当好,但我今天做了一个相当大的重组,使模型-视图-控制器更"兼容"。

我已经在c++中构建了主要的游戏引擎,但使用Objective-C来管理视图控制器,视图等。

现在,当我编译项目时,我在链接阶段得到一个错误。详情如下:

ld: duplicate symbol ApplicationEngine::OnFingerUp(Vector2) in/Users/Dan/Library/Developer/Xcode/DerivedData/BlackHoles-exrlidtstxzdtsbyjghgquhlsqul/Build/Intermediates/BlackHoles.build/debug -iphone模拟器/BlackHoles.build/Objects-normal/i386/ApplicationEngine。0和/Users/Dan/Library/Developer/Xcode/DerivedData/BlackHoles-exrlidtstxzdtsbyjghgquhlsqul/Build/Intermediates/BlackHoles.build/debug -iphone模拟器/BlackHoles.build/Objects-normal/i386/AppDelegate。O代表架构i386Collect2: ld返回1退出状态命令/Developer/Platforms/iphonessimulator .platform/Developer/usr/bin/g++-4.2 failed with exit code 1

OnFingerUp是我的c++ ApplicationEngine中的一个函数,从viewController中调用。

这个问题可能是由于我的#includes/#imports中的一些混淆引起的吗?

我的AppDelegate文件需要#include一个MainViewController文件来设置初始的viewController。MainViewController依次包含ApplicationEngine文件来实例化该类。ApplicationEngine包含OnFingerUp方法。当我得到触摸输入时,OnFingerUp方法从MainViewController被调用。这个包含序列会导致重复吗?

我注意到,如果我暂时从应用程序中完全删除OnFingerUp方法,那么我在ApplicationEngine中的另一个方法也会遇到同样的问题。

在编译单个文件时没有任何错误或警告。我也试过"全部清除"并重新编译,但没有成功。

谁有什么建议,我可以接近解决这个问题吗?谢谢你,丹。

我可以想到3个原因:1)不小心#包括一个。cpp文件,2)在头文件中忘记#ifndef守卫,3)在头文件中编写方法定义时忘记内联。