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

标签 iphone c++ objective-c xcode compiler-construction

我一直在为 iOS 构建游戏应用程序。该应用程序运行良好,但我今天进行了相当大的重组,使其更加“兼容”模型- View - Controller 。

我用 C++ 构建了主要的游戏引擎,但使用 Objective-C 来管理 View Controller 、 View 等。

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

ld: duplicate symbol ApplicationEngine::OnFingerUp(Vector2) in /Users/Dan/Library/Developer/Xcode/DerivedData/BlackHoles-exrlidtstxzdtsbyjghgquhlsqul/Build/Intermediates/BlackHoles.build/Debug-iphonesimulator/BlackHoles.build/Objects-normal/i386/ApplicationEngine.o and /Users/Dan/Library/Developer/Xcode/DerivedData/BlackHoles-exrlidtstxzdtsbyjghgquhlsqul/Build/Intermediates/BlackHoles.build/Debug-iphonesimulator/BlackHoles.build/Objects-normal/i386/AppDelegate.o for architecture i386 collect2: ld returned 1 exit status Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2 failed with exit code 1

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

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

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

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

编译单个文件时没有任何错误或警告。我也尝试过 Clean All 并重新编译,但没有成功。

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

最佳答案

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

关于iphone - 在 Xcode 中项目构建的链接阶段出现重复符号问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5835829/

相关文章:

c++ - 回调C德尔福

c++ - 正则表达式不显示 IPv6 匹配的正确结果

objective-c - 取消dispatch_io_read

iphone - 使用 Monotouch 在 iPhone 中播放 MJPEG 流

ios - 如何从字典 [Objective-C] 中的其他键中删除对象?

iphone - 如何同时播放iPod库中的两个音频文件?

c++ - 加速从 C++ 文件中读取整数

ios - 带有插图的 UIButton 标签文本自动收缩

ios - GKMatchRequest playerGroup 属性不起作用

ios - 传输应用程序 Testflight