diff --git a/config/perl.m4 b/config/perl.m4
index fbb13ed1c02f646516ae5d8112e028e0cd6ae3a7..1db1e627d8defff45c80720805a354fba427493b 100644
--- a/config/perl.m4
+++ b/config/perl.m4
@@ -86,12 +86,19 @@ AC_DEFUN([PGAC_CHECK_PERL_EMBED_LDFLAGS],
 [AC_REQUIRE([PGAC_PATH_PERL])
 AC_MSG_CHECKING(for flags to link embedded Perl)
 if test "$PORTNAME" = "win32" ; then
-perl_lib=`basename $perl_archlibexp/CORE/perl[[5-9]]*.lib .lib`
-test -e "$perl_archlibexp/CORE/$perl_lib.lib" && perl_embed_ldflags="-L$perl_archlibexp/CORE -l$perl_lib"
+	perl_lib=`basename $perl_archlibexp/CORE/perl[[5-9]]*.lib .lib`
+	if test -e "$perl_archlibexp/CORE/$perl_lib.lib"; then
+		perl_embed_ldflags="-L$perl_archlibexp/CORE -l$perl_lib"
+	else
+		perl_lib=`basename $perl_archlibexp/CORE/libperl[[5-9]]*.a .a | sed 's/^lib//'`
+		if test -e "$perl_archlibexp/CORE/lib$perl_lib.a"; then
+			perl_embed_ldflags="-L$perl_archlibexp/CORE -l$perl_lib"
+		fi
+	fi
 else
-pgac_tmp1=`$PERL -MExtUtils::Embed -e ldopts`
-pgac_tmp2=`$PERL -MConfig -e 'print $Config{ccdlflags}'`
-perl_embed_ldflags=`echo X"$pgac_tmp1" | sed -e "s/^X//" -e "s%$pgac_tmp2%%" -e ["s/ -arch [-a-zA-Z0-9_]*//g"]`
+	pgac_tmp1=`$PERL -MExtUtils::Embed -e ldopts`
+	pgac_tmp2=`$PERL -MConfig -e 'print $Config{ccdlflags}'`
+	perl_embed_ldflags=`echo X"$pgac_tmp1" | sed -e "s/^X//" -e "s%$pgac_tmp2%%" -e ["s/ -arch [-a-zA-Z0-9_]*//g"]`
 fi
 AC_SUBST(perl_embed_ldflags)dnl
 if test -z "$perl_embed_ldflags" ; then
diff --git a/configure b/configure
index 0062ee263a46249bed74a454f4dcee28a561ac2d..988b82fcdd5aa7cf9574e7d1a2ff00962061cc3e 100755
--- a/configure
+++ b/configure
@@ -7527,12 +7527,19 @@ $as_echo "$perl_embed_ccflags" >&6; }
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for flags to link embedded Perl" >&5
 $as_echo_n "checking for flags to link embedded Perl... " >&6; }
 if test "$PORTNAME" = "win32" ; then
-perl_lib=`basename $perl_archlibexp/CORE/perl[5-9]*.lib .lib`
-test -e "$perl_archlibexp/CORE/$perl_lib.lib" && perl_embed_ldflags="-L$perl_archlibexp/CORE -l$perl_lib"
+	perl_lib=`basename $perl_archlibexp/CORE/perl[5-9]*.lib .lib`
+	if test -e "$perl_archlibexp/CORE/$perl_lib.lib"; then
+		perl_embed_ldflags="-L$perl_archlibexp/CORE -l$perl_lib"
+	else
+		perl_lib=`basename $perl_archlibexp/CORE/libperl[5-9]*.a .a | sed 's/^lib//'`
+		if test -e "$perl_archlibexp/CORE/lib$perl_lib.a"; then
+			perl_embed_ldflags="-L$perl_archlibexp/CORE -l$perl_lib"
+		fi
+	fi
 else
-pgac_tmp1=`$PERL -MExtUtils::Embed -e ldopts`
-pgac_tmp2=`$PERL -MConfig -e 'print $Config{ccdlflags}'`
-perl_embed_ldflags=`echo X"$pgac_tmp1" | sed -e "s/^X//" -e "s%$pgac_tmp2%%" -e "s/ -arch [-a-zA-Z0-9_]*//g"`
+	pgac_tmp1=`$PERL -MExtUtils::Embed -e ldopts`
+	pgac_tmp2=`$PERL -MConfig -e 'print $Config{ccdlflags}'`
+	perl_embed_ldflags=`echo X"$pgac_tmp1" | sed -e "s/^X//" -e "s%$pgac_tmp2%%" -e "s/ -arch [-a-zA-Z0-9_]*//g"`
 fi
 if test -z "$perl_embed_ldflags" ; then
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
diff --git a/src/pl/plperl/plperl.h b/src/pl/plperl/plperl.h
index a4593cac3717e935974c8d57222da19578a7e8c9..7b1817eade38fd2ac21ae46ec735531dfae9ea17 100644
--- a/src/pl/plperl/plperl.h
+++ b/src/pl/plperl/plperl.h
@@ -42,6 +42,14 @@
 #undef vsnprintf
 #endif
 
+/*
+ * ActivePerl 5.18 and later are MinGW-built, and their headers use GCC's
+ * __inline__.  Translate to something MSVC recognizes.
+ */
+#ifdef _MSC_VER
+#define __inline__ inline
+#endif
+
 
 /*
  * Get the basic Perl API.  We use PERL_NO_GET_CONTEXT mode so that our code
diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm
index 31a8294d300c1c1fb57321c5f31dd2be92959df7..52b1ec2d344b3e79c6f6d2a0cec182c444958d42 100644
--- a/src/tools/msvc/Mkvcbuild.pm
+++ b/src/tools/msvc/Mkvcbuild.pm
@@ -614,9 +614,10 @@ sub mkvcbuild
 			}
 		}
 		$plperl->AddReference($postgres);
+		my $perl_path = $solution->{options}->{perl} . '\lib\CORE\*perl*';
+		# ActivePerl 5.16 provided perl516.lib; 5.18 provided libperl518.a
 		my @perl_libs =
-		  grep { /perl\d+.lib$/ }
-		  glob($solution->{options}->{perl} . '\lib\CORE\perl*.lib');
+		  grep { /perl\d+\.lib$|libperl\d+\.a$/ } glob($perl_path);
 		if (@perl_libs == 1)
 		{
 			$plperl->AddLibrary($perl_libs[0]);