Subject: | unresolved external symbol boot_version__vxs |
Commit https://bitbucket.org/jpeacock/version/commits/c2cc74f7ebf49c57504f914ede77c3d873e6d70c "Do not need vxs.xs any longer" looked suspicious to me. I tried to compile the head commit https://bitbucket.org/jpeacock/version/commits/8f1352c79510f2f9c9fc58e048dfc57286d28626/raw/ "Only need to compare the remaining string" and got this.
----------------------------------------------
C:\Documents and Settings\Owner\Desktop\cpan libs\jpeacock-version-8f1352c79510>
perl makefile.pl
Testing if you have a C compiler
compilet-3N3Pj.c
Creating library compilet.lib and object compilet.exp
Generating code
Finished generating code
Generating a nmake-style Makefile
Writing Makefile for version::vxs
Writing MYMETA.yml and MYMETA.json
Generating a nmake-style Makefile
Writing Makefile for version
Writing MYMETA.yml and MYMETA.json
C:\Documents and Settings\Owner\Desktop\cpan libs\jpeacock-version-8f1352c79510>
nmake test
Microsoft (R) Program Maintenance Utility Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.
cp vperl/vpp.pm blib\lib/version/vpp.pm
cp lib/version/regex.pm blib\lib/version/regex.pm
cp lib/version.pm blib\lib/version.pm
cp lib/version/Internals.pod blib\lib/version/Internals.pod
cp lib/version.pod blib\lib/version.pod
nmake -f Makefile all -nologo
cp lib/version/vxs.pm ..\blib\lib\version\vxs.pm
Running Mkbootstrap for version::vxs ()
C:\perl519\bin\perl.exe -MExtUtils::Command -e chmod -- 644 vxs.bs
cl -c -nologo -GF -W3 -O1 -MD -Zi -DNDEBUG -G7 -GL -DWIN32 -D_CONSOLE
-DNO_STRICT -DPERL_TEXTMODE_SCRIPTS -DPERL_HASH_FUNC_ONE_AT_A_TIME -DPERL_IMPLI
CIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -D_USE_32BIT_TIME_T -O1 -MD -Zi -DN
DEBUG -G7 -GL -DVERSION=\"0.9906\" -DXS_VERSION=\"0.9906\" "-IC:\perl519\li
b\CORE" vutil.c
vutil.c
c:\Documents and Settings\Owner\Desktop\cpan libs\jpeacock-version-8f1352c79510\
vutil\vutil.h(113) : warning C4005: 'is_LAX_VERSION' : macro redefinition
c:\perl519\lib\CORE\handy.h(1545) : see previous definition of 'is_LAX_V
ERSION'
c:\Documents and Settings\Owner\Desktop\cpan libs\jpeacock-version-8f1352c79510\
vutil\vutil.h(115) : warning C4005: 'is_STRICT_VERSION' : macro redefinition
c:\perl519\lib\CORE\handy.h(1548) : see previous definition of 'is_STRIC
T_VERSION'
C:\perl519\bin\perl.exe -MExtUtils::Mksymlists -e "Mksymlists('NAME'=>\
"version::vxs\", 'DLBASE' => 'vxs', 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPOR
TS' => { }, 'DL_VARS' => []);"
link -out:..\blib\arch\auto\version\vxs\vxs.dll -dll -nologo -nodefaultl
ib -debug -opt:ref,icf -ltcg -libpath:"c:\perl519\lib\CORE" -machine:x86 vutil
.obj C:\perl519\lib\CORE\perl519.lib oldnames.lib kernel32.lib user32.lib gdi3
2.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib
netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odb
ccp32.lib comctl32.lib msvcrt.lib -def:vxs.def
vxs.def : error LNK2001: unresolved external symbol boot_version__vxs
vxs.def : error LNK2001: unresolved external symbol boot_version__vxs
..\blib\arch\auto\version\vxs\vxs.lib : fatal error LNK1120: 2 unresolved extern
als
LINK : fatal error LNK1141: failure during build of exports file
NMAKE : fatal error U1077: 'link' : return code '0x475'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio .NET 2003\
VC7\BIN\nmake.exe"' : return code '0x2'
Stop.
C:\Documents and Settings\Owner\Desktop\cpan libs\jpeacock-version-8f1352c79510>
----------------------------------------
boot_version__vxs AKA BOOT: is the only sub Dynaloader creates from a SO/DLL, so the rest of the XSUBs are registered from boot with newXS calls. This is how xsubpp and nearly all (but not all, see this tutorial module https://github.com/tsee/p5-XS-WithoutXS/blob/master/lib/XS/WithoutXS.pm ) other xs libs do it.