PDA

View Full Version : XCode 3.1, iPhone SDK - adding a framework




drivefast
Apr 5, 2008, 09:58 PM
there's gotta be something goofy that i do here, i cant belive it wouldnt work. i need to add the security framework to my project. so i ctrl+click on the Frameworks / Linked Frameworks, Add -> Existing Frameworks, and i select the security framework for the iphone simulator platform, sdk, blah-blah. this also adds my framework to Targets / My Project / Link Binary with Libraries. i check to make sure the auto-added frameworks, like the foundation, are pretty much on the same path as the newly added security, so it looks like everything's consistent.

back to my project, i add the #import line for the header of the newly added framework, then try to use a C function and a constant which are declared in the header file. when i try to build, the compiler complains that the constant is not recognized. (if i remove the #import line - same effect.) if i replace the constant with its actual (numeric) value, the compile is successful, but tle link editor complains that my function name is an unrecognized symbol.

now if i do all this thing again with the address book framework instead of the security framework, using same platform, same sdk, same directories - everything works.

it drives me nuts. of course i verified the name of the header file, directory names and so on. if i expand the framework line on the left "groups and files" pane, the expected header files are shown. any idea what else i should check?... thank you for the advices.



sabross
Jun 3, 2008, 06:01 PM
I'm wondering if you solved your problem.

My problem is similar, I:

1. Link framework in Frameworks folder using existing Framework
2. Choos AddressBook.framework
3. Add #import <AddressBook/AddressBook.h>
4. Intellisence detects things like "ABPerson"

but then it seems that the reference is not been completed, cause if I try:

ABAddressBook *ab = [ABAddressBook sharedAddressBook];

"ABAddressBook Undeclared" and as well for every AB* class.

What am i missing?

Thx,

S

logix812
Jun 6, 2008, 02:08 PM
I have the same situation

1: Build the Framework (Install Path set to @executable_path/../Frameworks)
2: Add to iPhone App, XCode adds it in all the usual places
3: Add a new Copy Files Build Phase (Placing MyFramework.framework into the phase. Set the Drop-Down to Frameworks)
4: #import <MyFramework/MyFramework.h> (code completion knows it's there)
5: Build the app (no error)
6: Build and Run the App (dyld: Library not loaded:... blah blah blah)
7: Set the path type of the framework to Relative to Project or Relative to Current SDK (Since i am using the simulator).
8: Build and Run (dyld: Library not loaded:... blah blah blah)

Does the iPhone allow embedded Frameworks? What am I doing wrong?

logix812
Jun 6, 2008, 02:36 PM
I have also tried the following:
using @loader_path/../Frameworks instead of @executable_path/../Frameworks

And I have tried setting the Base SDK of the framework to Simulator - iPhone OS 2.0, but that just gives me this error when trying to build:

target specifies product type 'com.apple.product-type.framework', but there's no such product type for the 'iphonesimulator' platform

Same error if I set the Base SDK to Device - iPhone OS 2.0 ( I figured that would fail, but for the sake of completeness I gave it a whirl)

firewood
Jun 6, 2008, 09:21 PM
I had to use the Finder to view the directory containing the existing frameworks, and manually drag the framework I wanted into the XCode project tab. That got rid of my link errors. Using the menu to add didn't work.

fredyX
Oct 17, 2009, 06:09 PM
I had to use the Finder to view the directory containing the existing frameworks, and manually drag the framework I wanted into the XCode project tab. That got rid of my link errors. Using the menu to add didn't work.

HERE a little help for add frameworks in Xcode
"...To add frameworks, select the ContactMapper target (in the Targets group), right-click
it, and choose Get Info. In the General tab, hit the + button at the bottom of the screen,
choose the two frameworks, and click the Add button. .."