• 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
Re: NSBundle question
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSBundle question


  • Subject: Re: NSBundle question
  • From: Bill Bumgarner <email@hidden>
  • Date: Sat, 8 Dec 2001 01:51:41 -0500

( *sigh* People-- *please* stop assuming that the API you prefer -- Carbon,
Cocoa, Java, whatever -- is the *only* way to do things or the *right* way to do things. In particular, *please* stop assuming that because someone is doing it some other way, they must be wrong or ignorant... OS X is a whole lot bigger than OS 9, OpenStep, or JDK/Swing -- there are lots of options and people are going to do things in ways you may not agree with, but are perfectly correct. Sarcasm, arrogance, and responses like 'RTFM: open your eyes, it is damned obvious' don't help anyone. )

For Mach-O files-- I believe NSBundle only loads Mach-O's?-- one can use the NSModule API to grab a pointer to C functions. See the man page for NSModule; in particular the various NSLookup* functions. I believe NSLookupAndBindSymbol() will do what you want once the NSBundle has been loaded -- you can force loading of the NSBundle by invoking the -load method, checking the return type to see if it loaded successfully.

Once you find the NSSymbol that you are looking for, NSAddressOfSymbol() will turn it into an address and you can go from there.

If I remember correctly, gcc effectively prepends an underscore to all symbols. So, if you need to call the function 'initialize_foo_module' in the newly loaded bundle, it would look something like:

aSymbol = NSLookupAndBindSymbol("_ initialize_foo_module");
funcPtr = NSAddressOfSymbol(aSymbol);

returnValue = funcPtr(foo, bar, baz);

... or something like that ...

I may have missed a couple of '*'s in that and, certainly, a bit of error checking would be prudent.

There may be API in the core foundation that covers some of this? I'm not sure-- I do know that there is a plug in architecture over in the Carbon world that may come into play if you are dyna-loading CFM binaries, but I don't think it is applicable to mach-o.

b.bum

On Saturday, December 8, 2001, at 01:27 AM, email@hidden.
com wrote:

What if I need to get a specific C function to call? I should use CFBundle's
functions in this case? I've used NSBundle before invoking ObjC methods, but
this time I want a set of C functions.

b.bum
I ride tandem with the random....
.... things don't happen the way I planned them.


  • Follow-Ups:
    • Re: NSBundle question
      • From: Douglas Davidson <email@hidden>
    • Re: NSBundle question
      • From: "R. Eranki" <email@hidden>
  • Prev by Date: HTML Notification
  • Next by Date: File path from NSFileSystemFileNumber
  • Previous by thread: Re: NSBundle question
  • Next by thread: Re: NSBundle question
  • Index(es):
    • Date
    • Thread