• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Including Private Frameworks
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Including Private Frameworks


  • Subject: Including Private Frameworks
  • From: Loukas Kalenderidis <email@hidden>
  • Date: Tue, 17 Apr 2007 11:38:50 +1000

Hi guys,

I'm having a problem including a private framework in my app bundle. The private framework contains some code that we will be using in a bunch of apps, and as such I want it to remain a separate project and not another target of the app, as is suggested by the Apple doco[1]. I don't particularly want to follow the "Using Separate Xcode Projects For Each Target" section as I want the project to use a copy of the built framework installed on the development machine, rather than refer to the .xcodeproj, partly because you need to change the build products directory of both projects to point at the same place (?!)

Anyway, it's a pretty simple ask: Link against a custom framework (installed on the machine or in the project folder) and copy it into the application bundle. I can't find anywhere where this method is clearly covered in the documentation.

What I've done is this:
1) Set the "Installation Directory" property of the Framework's target to "@executable_path/../Frameworks" - this didn't really seem relevant but I noticed it changes what the output of otool says, so I tried it (tried it without as well)
2) Built framework
3) Installed framework to /Library/Frameworks
4) Added framework at the installed location to my project
5) Added a Copy Files build phase to copy the framework into the app bundle's Frameworks folder


Building with the Debug build configuration seems to work ok - the framework is copied to the right location. The application launches and fails with this error:
dyld: Library not loaded: /Users/loukas/Library/Frameworks/ AeroPlugins.framework/Versions/A/AeroPlugins
Referenced from: /Users/loukas/Desktop/Plotter Control/build/Debug/ Plotter Control.app/Contents/MacOS/Plotter Control
Reason: image not found


Inspecting the executable with otool -L shows the following:
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 11.0.0)
/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
/Users/loukas/Library/Frameworks/AeroPlugins.framework/ Versions/A/AeroPlugins (compatibility version 1.0.0, current version 1.0.0)
/System/Library/PrivateFrameworks/ZeroLink.framework/ Versions/A/ZeroLink (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.3.3)


Now I have no idea where that /Users/loukas.. reference comes from because that's not where the framework is installed. If I use install_name_tool to change the reference to "@executable_path/../ Frameworks/AeroPlugins.framework/Versions/A/AeroPlugins" all is well and the app launches successfully (well technically it doesn't because it tries to load two plugin modules that also have the same issue, but it gets past that stage of launching and doesn't complain until it tries to load the plugins). This prompted me to try changing the "Installation Directory" property of the main app's target to "@executable_path/../Frameworks", which doesn't really make a lot of sense, and that didn't have any effect.

Can anyone shed some light on the correct way to go about this in xcode?

Thanks,
Loukas


[1] http://developer.apple.com/documentation/MacOSX/Conceptual/ BPFrameworks/Tasks/CreatingFrameworks.html


_______________________________________________

Cocoa-dev mailing list (email@hidden)

Do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Follow-Ups:
    • Re: Including Private Frameworks
      • From: Loukas Kalenderidis <email@hidden>
  • Prev by Date: Re: TableView Event
  • Next by Date: PDFOutline memory management
  • Previous by thread: Re: Getting ColorSync profile path
  • Next by thread: Re: Including Private Frameworks
  • Index(es):
    • Date
    • Thread