Need to learn C, best books?
muppet
scott at asofyet.org
Wed Oct 31 20:23:27 GMT 2007
On Oct 31, 2007, at 8:12 AM, Nicholas Clark wrote:
> but then I wondered how hard it is to create CPAN modules that
> portably
> generate C libraries that other XS code can link against.
If you use DynaLoader, then
sub dl_load_flags { $^O eq 'darwin' ? 0x00 : 0x01 }
seems to work well enough for making the symbols in your extension's
object available to other extensions. Of course you still need to
locate the extension's .dll for the link line on windows to satisfy
the brain-dead early 90's must-resolve-all-symbols-at-link-time
semantics. This is the approach used by the entire gtk2-perl stack,
and it works well enough on linux, freebsd, darwin, and win32.
(Commentary explaining the magical 0x00 and 0x01 values and the 'if
darwin' lives next to this code in Gtk2.pm.)
Or, if you're really evil and want better portability at the expense
of some startup goo, make your extension return pointers to the
relevant functions wrapped in SVs that the dependent extensions can
slurp in at BOOT: and call indirectly.
But you were probably being facetious, and i should stop giving such
answers.
--
elysse: You dance better than some.
me: "Some" what?
elysse: Some asparagus.
More information about the london.pm
mailing list