Re: [Cocoadev] Problem becoming a good citizen and backwards compatible
Re: [Cocoadev] Problem becoming a good citizen and backwards compatible
- Subject: Re: [Cocoadev] Problem becoming a good citizen and backwards compatible
- From: Aaron Burghardt <email@hidden>
- Date: Sun, 14 Aug 2005 21:04:52 -0400
Hi Alexander,
I have a small project that uses the DiskArbitration framework, too,
so I will have to deal with this also. I don't have a solution, but
hopefully can give you some clues.
The central problem is that your binary gets linked against the
DiskArbitration framework with the path /System/Library/Frameworks
instead of /System/Library/PrivateFrameworks. You can verify this
with otool:
otool -L myApp.app/Contents/MacOS/myApp
and no matter what you do, Xcode resolves back to the standard path.
I tried symbolic links, copying the framework to PrivateFrameworks,
copying it to custom location, various linker flag configurations,
and so forth.
Here are a couple ideas I haven't tried:
1. Do your own custom linking. Add the flag "-v" to Other Linker
Flags and you will see in the build details the actual command that
libtool uses to invoke ld. You might be able to delete the executable
that Xcode produces and link the product with a custom ld to get the
PrivateFrameworks path.
2. Factor out your DiskArbitration code to a framework and build just
that framework on Panther. Hopefully you can keep that code small so
you don't need to recompile often.
3. Edit the executable with a hex editor to change the path to the
PrivateFrameworks.
There was a discussion in the last few months that went into more
details on these ideas, but I couldn't find it.
hope this helps, and please post any updates you have.
Cheers,
Aaron
On Aug 13, 2005, at 3:59 AM, Alexander Griekspoor wrote:
Hi all!
I have the following problem: under Panther our program disctop
made use of private APIs from the Diskarbitration framework, ouch.
However, these have becoming public under Tiger, hooray! The
problem is that the framework thus moved from /System/Library/
PrivateFrameworks under Panther to /System/Library/Frameworks under
Tiger. For compatibility reasons there's still a symbolic link in
the private frameworks folder to the new location.
The problem is that I can't get my app to work under Panther while
building it on my Tiger machine using the current OS SDK. The
console reports that it can't find the framework. If I have it
build using the 10.3.9 SDK it starts to complain that it can't find
the framework already during compile time. Does anyone have
experience with this kind of situation? Should it normally work to
link to private frameworks and target previous OS's?
Any suggestions are more than welcome, the last option is always to
ship a Tiger and Panther version of my app, but I would like to
avoid at all costs, plus at this moment I can't any Panther version
at all on my Tiger machine...
Alex
*********************************************************
** Alexander Griekspoor **
*********************************************************
The Netherlands Cancer Institute
Department of Tumorbiology (H4)
Plesmanlaan 121, 1066 CX, Amsterdam
Tel: + 31 20 - 512 2023
Fax: + 31 20 - 512 2029
E-mail: email@hidden
AIM: email@hidden
Web: http://www.mekentosj.com
EnzymeX - To cut or not to cut
http://www.mekentosj.com/enzymex
*********************************************************
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
Attachment:
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden