PluginLinkingOnMac

From X-Plane SDK
Jump to: navigation, search
This page was imported from the previous wiki engine. It needs a review and cleanup of formatting. Please see this page for more information.
WARNING: this is LEGACY documentation - see BuildInstall for current build information. Ben will delete this page once consolidation of builds are done.

This technote contains some notes on linker settings for Mac.

! Mach-O Plugins - Mach-O file type.

Your Mach-O plugin type can be either a dylib or a bundle. Please note that we are referring to the Mach-O header type of the ".xpl" file, not the packaging! To tell your type, use otool -h <plugin> on your plugin - a header file type of 6 is a dylib, 8 is a bundle.

If you make a bundle, your plugin will work on OS X 10.3 and 10.4 with flat or two-level namespace.

If you make a dylib, your plugin will work on OS X 10.3 and 10.4 with a two-level namespace, but only on 10.4 with a flat namespace!

Two-level namespace is picked by not using -flat_namespace. If you use a two level namespace you must use -undefined dynamic_lookup. Otherwise you can use -undefined dynamic_lookup or -undefined warning.

Bundle or dylib is selected using -bundle or -dynamiclib.

! Mach-O Plugins - Bundling

You can bundle a Mach-O plugin although we do not recommend it. Basically if your plugin looks like a bundle to CFBundle, the SDK will load it.

(This wrapping may be dropped for 2.0 APIs, btu will continue to be supported for 1.0 APIs - this is under review.)

! CFM Plugins

CFM plugins are necessary to support older versions of X-Plane on OS 9. If you do not intend to support X-Plane 6 or 7 we do not recommend CFM.

(This wrapping may be dropped for 2.0 APIs, btu will continue to be supported for 1.0 APIs - this is under review, but dropping 2.0 CFM support is very likely.)