(Did we ever determine the reason that not all functions are exported ?)
I think you pretty much answered that question when you quoted Jan Dubois. Which you might summarise as "because they can" on some platforms.
Try editing perl.h line ~3943 (5.8.8 build)
# define PERL_CALLCONV __declspec(dllexport)
Without the above edit, perl58.dll from the AS817/5.8.8 distribution:
C:\test>pushd \AS817\perl\bin C:\AS817\perl\bin>dumpbin /exports perl58.dll | wc -l 1457 C:\AS817\perl\bin>dumpbin /exports perl58.dll | find "av_reify" C:\AS817\perl\bin>
With the above change, perl58.dll(5.8.8):
c:\Perl\src\perl-5.8.8>dumpbin /exports perl58.dll | wc -l 1995 c:\Perl\src\perl-5.8.8>dumpbin /exports perl58.dll | find "av_reify" 627 272 00001000 Perl_av_reify
How many problems those extra 500 exports will fix I'm not sure, but I'm betting quite a few.
Whether it will work with 5.10 I'll tell you in about 1/2 hour.
Update: Seems to work similarly for 5.10 also:
[10:50:31.10]C:\Perl\src\perl-5.10.0>dumpbin /exports perl510.dll | wc + -l 1993 [10:50:47.42]C:\Perl\src\perl-5.10.0>cd \Perl510\bin [10:50:59.53]C:\Perl510\bin>dumpbin /exports perl510.dll | wc -l 1387
And the (summary) output from nmake test looks 'normal':
Failed Test Stat Wstat Total Fail List of Failed ---------------------------------------------------------------------- +--------- ../ext/IO/t/io_dup.t 6 4 2-5 ../lib/lib.t 5 1280 13 0 ?? comp/multiline.t 6 2 5-6 io/dup.t 29 6 2-7 (1 subtest UNEXPECTEDLY SUCCEEDED), 56 tests and 1083 subtests skippe +d. Failed 4/1470 test scripts. 12/189314 subtests failed. Files=1470, Tests=189314, 1264 wallclock secs ( 0.00 cusr + 0.00 csys + = 0.00 CPU) Failed 4/1470 test programs. 12/189314 subtests failed. NMAKE : fatal error U1077: '..\perl.exe' : return code '0xff' Stop.
Whether it will break anything anywhere, or is backwards compatible with 5.0 again I do not know.
And where it leaves all the shenanigins played out by embed.pl & regen_lib.pl and all the work that goes into maintaining embed.fnc, pp.sym, intrpvar.h, perlvars.h and thrdvar.h is another open question.
In reply to Re^5: Perl for Windows ?
by BrowserUk
in thread Perl for Windows ?
by jflevi
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |