• 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: Embedding resources in Static Cocoa Library
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Embedding resources in Static Cocoa Library


  • Subject: Re: Embedding resources in Static Cocoa Library
  • From: Alexander Bokovikov <email@hidden>
  • Date: Mon, 08 Oct 2012 08:23:55 +0600

On Oct 7, 2012, at 1:00 AM, koko <email@hidden> wrote:

> I want to make a static cocoa library that is an NSTableView and allots data is contained in the library.
> I want images in the rows of the table.
> Where would one get these images as their is no bundle where that can be stored?
> Or the question is where are resources for a static coco library stored?

All suggestions here are reduced to an external file (bundle) usage. Just for a case, if you really wish to store any data (non-executable code, like images, etc.) within the executable (regardless of the type: the main project, a static library, a dynamic library) there is a way to do it. But you'll need to know how to use assembler in the Cocoa project. If you know it, this way is for you. I used it in my Windows project, but never in Cocoa.

AFAIK, you need to create a .s file and add it to your Xcode sources. Then Xcode will know what to do with this file. And you need to write something like this within the .s file:

.text
.globl	_MyFunc
	pushl	ëx
	call	L1
	jmp	L2
	.align	1
	.byte	0x0,0x1,0x2,0x3,0x4
	.byte	0x5,0x6,0x7,0x8,0x9
L1:
	popl	êx
	movl	eax, ebx
	pushl	êx
	ret
L2:
	addl	5, ëx
	movl	ëx,êx
	popl	ëx
	ret

As a result, you'll have the address of the embedded information in the eax register. I.e. you just need to create the function declaration like this one:

(void *) myFunc(void);

and call it. Hope this code is close to correct one, as I never dealt with Mac OS assembler. And please take it into account, that "5", mentioned in the code above, means the size of the "jmp L2" instruction, which is five in 32-bit assembler, but it will take nine bytes in the 64-bit one. And of course, I'm talking only about x86/64 assembler. Don't know anything about PowerPC one.

The only what is left out is how to fill out the ".byte" with a useful information. Personally I used a specially written simple utility, transcoding any binary file into the fixed length lines of ".byte " hex codes. You can use decimal or octal codes too. as far as the assembler allows it.

HTH!

_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:

This email sent to email@hidden

  • Follow-Ups:
    • Re: Embedding resources in Static Cocoa Library
      • From: Simone Tellini <email@hidden>
  • Prev by Date: Re: Embedding resources in Static Cocoa Library
  • Next by Date: Re: Embedding resources in Static Cocoa Library
  • Previous by thread: Re: Embedding resources in Static Cocoa Library
  • Next by thread: Re: Embedding resources in Static Cocoa Library
  • Index(es):
    • Date
    • Thread