Linker Can't Find Symbols for a framework that is embedded in another framework

I have a framework that links another framework (my framework has classes that wrap some things in a third party framework).


If any class in my main app tries to use a class from the framework inside another framework, the linker fails with undefined symbols. But everything public in the framework inside of the framework should be public.


Any ideas how I can resolve this?


Thanks

I can't seem to expose the public headers of the embedded framework from my framework to the main app.


I can "build" the framework fine on its own. The only way I can get my app to run, is to link the embedded framework in my app also...but then I end up with two copies of the same framework and I have a mess on my hands.


I tried adding a "Copy Files" build phase in my framework, and added the embedded framework there. But any public imports of the embedded framework fail when I try to build my main app.


I know Cocoa.h imports frameworks:


#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>
#import <CoreData/CoreData.h>


It'll run if I keep the embedded framework imports private...but then my main app can't use any classes directly on the framework embedded in a framework.



Edit:


So I wiped the derived data. Then I did what I could of sworn I already tried like 3 times (though it is possible I made a mistake). I added the framework within my framework...added it in "copy files" build phase under frameworks....


then in order for my main app to compile, I had to go to "Framework Search paths" and added the path to it. Now the public import of this framework, within my frameworks umbrella file is working. whew.

Looks like you have to link the framework in the main app too. Then it'll work.


EDIT: Actually no, doing this links the framework twice. And when you run Class ClassNameHere is implemented in both /path to class/ and /path to class/ which will be used is undefined.

Accepted Answer

I can't seem to expose the public headers of the embedded framework from my framework to the main app.


I can "build" the framework fine on its own. The only way I can get my app to run, is to link the embedded framework in my app also...but then I end up with two copies of the same framework and I have a mess on my hands.


I tried adding a "Copy Files" build phase in my framework, and added the embedded framework there. But any public imports of the embedded framework fail when I try to build my main app.


I know Cocoa.h imports frameworks:


#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>
#import <CoreData/CoreData.h>


It'll run if I keep the embedded framework imports private...but then my main app can't use any classes directly on the framework embedded in a framework.



Edit:


So I wiped the derived data. Then I did what I could of sworn I already tried like 3 times (though it is possible I made a mistake). I added the framework within my framework...added it in "copy files" build phase under frameworks....


then in order for my main app to compile, I had to go to "Framework Search paths" and added the path to it. Now the public import of this framework, within my frameworks umbrella file is working. whew.

Linker Can't Find Symbols for a framework that is embedded in another framework
 
 
Q