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

问题描述 投票:0回答:1

我一直在为 iOS 构建游戏应用程序。该应用程序运行得相当好,但我今天做了相当大的重组,以更加“兼容”模型-视图-控制器。

我用 C++ 构建了主游戏引擎,但使用 Objective-C 来管理视图控制器、视图等。

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

ld: /Users/Dan/Library/Developer/Xcode/DerivedData/BlackHoles-exrlidtstxzdtsbyjghgquhlsqul/Build/Intermediates/BlackHoles.build/Debug-iphonesimulator/BlackHoles.build/Objects-normal/ 中的重复符号 ApplicationEngine::OnFingerUp(Vector2) 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 又#includes ApplicationEngine 文件来实例化该类。 ApplicationEngine 包含 OnFingerUp 方法。当我收到触摸输入时,会从 MainViewController 调用 OnFingerUp 方法。这个包含序列会导致重复吗?

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

各个文件编译时没有任何错误或警告。我也尝试过清理全部并重新编译,但没有任何乐趣。

有人对我如何解决这个问题有任何建议吗?谢谢,丹。

c++ objective-c iphone xcode
1个回答
3
投票

我可以想到 3 个原因:1)不小心 #include .cpp 文件,2)忘记头文件中的 #ifndef 保护,3)在头文件中编写方法定义时忘记内联。

© www.soinside.com 2019 - 2024. All rights reserved.