----- 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

Reply via email to