Earlier, I asked the dll gurus,
> Latest response from Jan Dubois of ActiveState:
>> On Fri, 24 Aug 2007, Suresh Govindachar wrote:
>>
>>> Sisyphus suggested linking with C:/opt/perl/lib/CORE/perl58.lib
>>> (which does have the symbols in it) in the command that creates
>>> if_perl.o and/or in the command that builds gvim.exe (which is
>>> also the command that reports the missing references).
>>>
>>> But the build is supposed to use the library dynamically, rather
>>> than be statically linked. So perl58.dll must tell the linker
>>> that it will resolve the missing references at run time.
>>>
>>> Perhaps although ActiveState added code for the references, they
>>> are not exposing them to the linker for dynamic use via
>>> perl58.dll? Or is everything in a dll automatically visible?
>>
>> Perl_sv_2iv_flags is exported from perl58.dll. This symbols is
>> being used by virtually every Perl module containing XS code
>> because the SvIV() macro will expand into a call to it:
>>
>> [in sv.h]
>> #define SvIV(sv) (SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv))
>> ...
>> #define sv_2iv(sv) sv_2iv_flags(sv, SV_GMAGIC)
Note: grep -rl Perl_sv_2iv_flags C:\opt\perl/lib/Core
results in:
C:\opt\perl/lib/Core/embed.h
C:\opt\perl/lib/Core/perl58.lib
C:\opt\perl/lib/Core/proto.h
So added -lperl58 to the command that generates if_perl.o and to
the command that generates gvim.exe. The first command reported:
gcc: -lperl58: linker input file unused because linking not done
The second command resulted in the same undefined reference error.
Just to be sure, I added -lblah to the second command, and got the
new error message:
c:\opt\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe:
cannot find -lblah
--Suresh
--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---