> Le 4 déc. 2016 à 21:41, Andreas Falkenhahn <andr...@falkenhahn.com> a écrit :
> 
> I've now implemented plugin support using dlopen() in my app and
> it works fine so far.
> 
> However, it seems like *all* symbols are exported to the dylib
> inside the Cocoa Touch Framework. How can I configure Xcode to
> export only certain symbols? I want to name the symbols that
> should be exported explicitly.
> 
> When compiling normal macOS dylibs I don't use Xcode at all but
> makefiles. In that case, I simply use gcc's -exported_symbol_list
> argument to tell the linker which symbols should be made public.
> I could probably use this approach for Cocoa Touch Frameworks as
> well but I was wondering whether Xcode has a more convenient
> solution of marking symbols for export than using the -exported_symbol_list
> linker option. Is there any?
> 

The best way if you don’t want to use a symbole file is to make all symboles 
hidden by default (using the GCC_SYMBOLS_PRIVATE_EXTERN Xcode build settings), 
and then annotate the exported symbols using the visibility attribute.

In practice, it means you should declared the exported symbols as follow:

__attribute__((__visibility__("default"))) extern void visible_function();

You can declare a macro to simplify such construct

#define MY_PLUGIN_EXPORT __attribute__((__visibility__("default"))) extern 

MY_PLUGIN_EXPORT 
void visible_function();

This attribute should also be set on obj-c class you want to export.


_______________________________________________

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

Reply via email to