2013/11/28 Thu 15:18:55 UTC+9 Konovalov, Vadim wrote:
> ActivePerl 5.18.1 binaries are built with VC6 compiler, with in turn have some applied service-packs.
> (I have VC6 without the mentioned SPs)
ActivePerl 5.16 is built with VC6. However, it seems that ActivePerl 5.18.1
is built with MinGW.
Regards,
Ken Takata
A fix for ActivePerl 5.18.1 is already posted at here:
http://code.google.com/p/vim/issues/detail?id=170#c5
(Hmm, preprocessor directives are not nicely indented. It's better to
fix them.)
However, using this fix is not enough when build with MSVC.
As I already mentioned, ActivePerl 5.18.1 is build with MinGW.
It means that C:\Perl\lib\CORE\config.h is configured for MinGW.
So I had to change the configuration for MSVC.
--- C:\Perl\lib\CORE\config.h.org Sat Nov 30 04:07:14 2013
+++ C:\Perl\lib\CORE\config.h Sat Nov 30 04:31:24 2013
@@ -2441,7 +2441,7 @@
* static (c89 compilers)
*/
#define HAS_STATIC_INLINE /**/
-#define PERL_STATIC_INLINE static __inline__ /**/
+#define PERL_STATIC_INLINE static __inline /**/
/* USE_STDIO_PTR:
* This symbol is defined if the _ptr and _cnt fields (or similar)
After applying this patch, I could build with MSVC10.
I confirmed that `:perl VIM::Msg("hello")` works, but I don't know
it fully works because there are no tests for if_perl :-(
Regards,
Ken Takata
2013/11/30 Sat 22:09:18 UTC+9 Steve Hall wrote:
> With the revised if_perl.xs from your previous link, I still get the
> following build errors in a Cygwin build.
>
> 1:In file included from
> /cygdrive/c/strawberry/perl/lib/CORE/sys/socket.h:30:0,
> 2: from /cygdrive/c/strawberry/perl/lib/CORE/win32.h:381,
> 3: from /cygdrive/c/strawberry/perl/lib/CORE/win32thread.h:4,
> 4: from /cygdrive/c/strawberry/perl/lib/CORE/perl.h:2869,
> 5: from if_perl.xs:36:
> 6:/usr/i686-pc-mingw32/sys-root/mingw/include/ws2tcpip.h:38:2:
> error: #error "ws2tcpip.h is not compatible with winsock.h. Include
> win
> 7:In file included from
> /cygdrive/c/strawberry/perl/lib/CORE/sys/socket.h:30:0,
> 8: from /cygdrive/c/strawberry/perl/lib/CORE/win32.h:381,
> 9: from /cygdrive/c/strawberry/perl/lib/CORE/win32thread.h:4,
> 10: from /cygdrive/c/strawberry/perl/lib/CORE/perl.h:2869,
> 11: from if_perl.xs:36:
I think this is a problem of Perl and I don't know this can be fixed by Vim.
The following patch might fix the problem:
--- C:\Perl\lib\CORE\sys\socket.h.org Wed Mar 27 12:44:16 2013
+++ C:\Perl\lib\CORE\sys\socket.h Sun Dec 01 16:06:52 2013
@@ -13,7 +13,7 @@
#include <windows.h>
/* Too late to include winsock2.h if winsock.h has already been loaded */
-#ifndef _WINSOCKAPI_
+#if !defined(_WINSOCKAPI_) && !defined(_WINSOCK_H)
# ifndef FD_SETSIZE
# define FD_SETSIZE 2048
# endif
Regards,
Ken Takata
windows 8.1 x64
vim 7.4.155
strawberry perl 5.18.2.1 x64
MinGW-builds toolchain, x64-4.8.1-release-posix-seh-rev5
Compiling vim with following cmd:
mingw32-make.exe -f Make_ming.mak ARCH=x86-64 FEATURES=HUGE OLE=yes PERL="d:/devel/perl" PERL_VER=518 DYNAMIC_PERL=yes gvim.exe xxd/xxd.exe vimrun.exe
Vim compiled successfully, but when i trying to use perl inside vim - got error:
E370: Could not load library perl518.dll
Sorry, this command is disabled: the Perl library could not be loaded.
Perl bin directory is in the %path%, also, with ActivePerl 5.18.1 x64 everything works fine.
Please, help to resolve this problem.