----- Original Message ----- From: "Jan Dubois" <[EMAIL PROTECTED]> To: "'Sisyphus'" <[EMAIL PROTECTED]>; "'perl-win32-users'" <perl-win32-users@listserv.ActiveState.com> Sent: Tuesday, March 04, 2008 3:10 PM Subject: RE: Not all functions are exported by the perl dll
> On Mon, 03 Mar 2008, Sisyphus wrote: >> Alias.xs defines PERL_CORE (but not PERL_EXT). I gather that PERL_CORE is >> also switching on access to those functions. (The changes mentioned in >> the >> above two links involve both PERL_CORE and PERL_EXT.) > > PERL_CORE is a superset: everything is visible when you define PERL_CORE > (but may still not be linkable if your code isn't statically linked into > the core). PERL_EXT exposes fewer symbols, but all symbols those symbols > are always available under PERL_CORE too. I think it is a mistake that > Alias.xs uses PERL_CORE. Except that if PERL_EXT is defined instead of PERL_CORE, then Data::Alias won't build on 5.10 on Win32 - and the author clearly intends that Data::Alias should build on 5.10 on Win32. (Maybe he shouldn't be doing hat - until Data::Alias actually becomes core, at least.) If PERL_EXT is defined instead of PERL_CORE, the 'dmake' process terminates with: gcc -c -s -O2 -DWIN32 -DHAVE_DES_FCRYPT -D__NO_ISOCEXT -DPERL_IMPLICIT_ CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -DPERL_MSVCRT_READFIX -s -O2 -DVERSION=\"1.07\" -DXS_VERSION=\"1.07\" "-IC:\perl510_M\5.10.0\lib\CORE" Alias.c Alias.xs: In function `da_ck_rv2cv': Alias.xs:1686: error: `DO' undeclared (first use in this function) Alias.xs:1686: error: (Each undeclared identifier is reported only once Alias.xs:1686: error: for each function it appears in.) dmake: Error code 129, while making 'Alias.o' > > So basically you have 3 layers: > > 1) all symbols are visible when you define PERL_CORE > 2) only the symbols marked with A or E are available when you define > PERL_EXT > 3) only the symbols marked with A are available in a normal extension > > Nothing is preventing you from breaking the rules, except that on Windows > and AIX you won't be able to access non-exported symbols, thereby > protecting > the inner layer (1) above. > I know one guy who is particularly rankled by the fact that *nix users can cheat to a greater extent than can Windows and AIX users. He feels that the capacity to cheat should be equal on *all* operating systems. Anyway ... I'm rambling now :-) ... thanks for the elaboration ... appreciated. Cheers, Rob _______________________________________________ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs