duplicate symbol _OBJC_METACLASS_$_ClassName

前端 未结 18 1920
被撕碎了的回忆
被撕碎了的回忆 2020-12-15 15:10

I am trying to run my cocos2d application and facing this error, as I have recently upgraded my sdk to 4.2 and my cocos2d to 0.99.5.

I tried to clean my project even

相关标签:
18条回答
  • 2020-12-15 15:59

    Another reason for this, for those out there who did the same as I just did, might be that you re-created a managed object class. By doing that and choosing another group in the project structure, you accidentally create another reference to the same files.

    I ended up with two references for header and implementation in both the root of the project and in my model group. Removing the topmost references to .h and .m files got rid of the linking failure.

    0 讨论(0)
  • 2020-12-15 16:00

    In my case this was happening because of Xcode automatically generating my NSManagedObject class, which then clashed with my manually created NSManagedObject class. In this case you can set "Codegen" to "Manual/None" in the Data Model Inspector for your newly created Entity.

    0 讨论(0)
  • 2020-12-15 16:02

    I had a project with 2 targets. A target named Component and the second named Sample. Sample was using component as a link library. Then Component was using a pod named MyPod (installed with cocoapod).

    The Podfile was written like this :

    def shared_pods
       pod 'MyPod' 
    end
    
    target 'Component' do
        shared_pods  
    end
    
    target 'Sample' do
        shared_pods
    end
    

    Both targets was referencing the shared pod list. When building Component target, no problem appears, but when building sample i get a duplicate symbol _OBJC_METACLASS_$_ClassName. I have changed the Podfile to :

    def shared_pods
        # empty
    end
    
    target 'Component' do
       pod 'MyPod'
       shared_pods  
    end
    
    target 'Sample' do
        shared_pods
    end
    

    And that solve the problem. 3 hours spent, hope to save somebody time.

    0 讨论(0)
  • 2020-12-15 16:03

    Sometimes Core Data inserts AnyProjectNameModel.xcdatamodeld to the Compile Sources of the Build Phases. Check it and delete it and everything is run again... The error message just indicates the generated ManagedObjects... The correct place for the AnyProjectNameModel.xcdatamodeld is the Copy Bundle resources in the Build Phases.

    0 讨论(0)
  • 2020-12-15 16:04

    I have figured out the solution myself, sorry for posting little delayed. All assistance are much appreciated the but problem arises when I add new CCLayer derived class and checkmark cocos2d 0.99.5 static library which was wrong. Then I re-Ad my class without checking and clean my targets and then build and go. Problem solved now.

    0 讨论(0)
  • 2020-12-15 16:05

    Another thing to check for the double linking - its possible to have the same file in two different places in the file list on the left. Then the compiler compiles and links it twice.

    This happens when playing with organizing your file hierarchy, for example.

    You don't have to be making a library or anything fancy - just drag a .m in to two different locations in the project tree.

    Remember to only remove the reference to one of them, no file trashing is needed.

    0 讨论(0)
提交回复
热议问题