Roland, thanks for taking the time for explaining this. I think I'm closer to the solution but I didn't make it work yet.
The screensaver ends installed in ~/Library/Screen Savers/Ninja.saver/ I was able to cd there and cd Contents/Frameworks/Paddle.framework/Versions/A, run install_name_tool command and change the name for the Paddle binary. But I don't know how to re link it. So I went to XCode and for the Saver target I added a Run Script phase in Build Phases, between Copy File (the framework) and Link Binary With Libraries. The script is: install_name_tool -id @rpath/ $BUILT_PRODUCTS_DIR/Ninja.saver/Contents/Frameworks/Paddle.framework/Versions/A/Paddle After building and installing the screensaver in its destination folder, I can check with otool that the change was done: ~/Library/Screen Savers/Ninja.saver/Contents/Frameworks/Paddle.framework/Versions/A$ otool -D Paddle Paddle: @rpath/ But, when I run the screensaver, I still get the error: Jul 3 13:30:46 ironbird.local ScreenSaverEngine[74782]: Error loading /Users/juanjo/Library/Screen Savers/Ninja.saver/Contents/MacOS/Ninja: dlopen(/Users/juanjo/Library/Screen Savers/Ninja.saver/Contents/MacOS/Ninja, 265): Library not loaded: @executable_path/../Frameworks/Paddle.framework/Versions/A/Paddle Referenced from: /Users/juanjo/Library/Screen Savers/Ninja.saver/Contents/MacOS/Ninja Reason: image not found What can be happening? I think this is related to Kevin doubt. Thanks in advance for your patient and time. On Fri, Jul 3, 2015 at 10:57 AM, Roland King <r...@rols.org> wrote: > Downloading the zip file referenced earlier and using a simple main.c > > $ clang -x c -o main.o -c main.c > $ clang main.o -o main > $ otool -L main > main: > /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, > current version 1213.0.0) > > adding the framework right from the unzipped zip and then otool’ing it > > $ clang main.o -F ~/Downloads/Mac-Framework-master -framework > Paddle -o main > $ otool -L main > main: > > @executable_path/../Frameworks/Paddle.framework/Versions/A/Paddle > (compatibility version 1.0.0, current version 1.0.0) > /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, > current version 1213.0.0) > > That’s that @executable_path from the library, using otool -D on it ... > > $ otool -D ~/Downloads/Mac-Framework-master/Paddle.framework/Paddle > /Users/rols/Downloads/Mac-Framework-master/Paddle.framework/Paddle: > @executable_path/../Frameworks/Paddle.framework/Versions/A/Paddle > > now update it and check it again > > $ install_name_tool -id @rpath/bananas/are/tasty > ~/Downloads/Mac-Framework-master/Paddle.framework/Paddle > > $ otool -D ~/Downloads/Mac-Framework-master/Paddle.framework/Paddle > /Users/rols/Downloads/Mac-Framework-master/Paddle.framework/Paddle: > @rpath/bananas/are/tasty > > and re-link main and then otool it again > > $ clang main.o -F ~/Downloads/Mac-Framework-master -framework > Paddle -o main > $ otool -L main > main: > @rpath/bananas/are/tasty (compatibility version 1.0.0, > current version 1.0.0) > /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, > current version 1213.0.0) > > That’s where it comes from - that’s how you can change it. Don’t know what > you’re seeing. > > > On 3 Jul 2015, at 21:19, Kevin Meaney <k...@yvs.eu.com> wrote: > > > >> > >> I don’t know what the executable_path is for a screensaver, you’d think > it was very much the same thing. So first simplest option is to work out > what that is and then just put the library at the place it expects to be, > @executable_path/../Frameworks/<lots of garbage>. As long as that’s within > your bundle somewhere, trivial to do. You can even put it somewhere else > and put a symlink in the bundle. > > > > The @executable_path for the Screen saver will be the path to the > executable process that loads the OP’s screen saver plugin. in this case > ScreenSaverEngine. > > > >> > >> If you want to change it to something like @rpath/whatever then > >> > >> install_name_tool -id @rpath/whatever <object> > > > > This is where I get confused. In my project not the original posters my > framework has Installation Directory set to @rpath and everything works as > I need it to thanks to that Mike Ash article. But if I do otool -D on the > framework then I see @executable_path … etc. Making me conclude the rpath > information was stored separately in the binary to the install name so my > thinking was that modifying the install name wouldn’t help. > > > > Kevin > > > > -- Juanjo Conti <jjconti <http://goog_2023646312>@carouselapps.com <jjco...@carouselapps.com>> Software Engineer - Carousel Apps <https://carouselapps.com> -- Carousel Apps Limited, registered in England & Wales with registered number 7689440 and registered office Unit 2 Artbrand Studios, 7 Leathermarket Street, London SE1 3HN. Any communication sent by or on behalf of Carousel App Ltd or any of its subsidiary, holding or affiliated companies or entities (together "Watu") is confidential and may be privileged or otherwise protected. If you receive it in error please inform us and then delete it from your system. You should not copy it or disclose its contents to anyone. Messages sent to and from Watu may be monitored to ensure compliance with our internal policies and to protect our business. Emails are not secure and cannot be guaranteed to be error free. Anyone who communicates with us by email is taken to accept these risks. _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com