The error is the following

libtool: link: (cd .libs/nbdkit-perl-plugin.lax/libutils.a && ar x "/c/Users/yifangu/Documents/devel/nbdkit/plugins/perl/../../common/utils/.libs/libutils.a")
libtool: link: ar cru .libs/nbdkit-perl-plugin.a .libs/nbdkit_perl_plugin_la-perl.o  .libs/nbdkit-perl-plugin.lax/libutils.a/libutils_la-cleanup-nbdkit.o .libs/nbdkit-perl-plugin.lax/libutils.a/libutils_la-cleanup.o .libs/nbdkit-perl-plugin.lax/libutils.a/libutils_la-quote.o .libs/nbdkit-perl-plugin.lax/libutils.a/libutils_la-utils.o
libtool: link: ranlib .libs/nbdkit-perl-plugin.a
libtool: link: rm -fr .libs/nbdkit-perl-plugin.lax
libtool: link: ( cd ".libs" && rm -f "nbdkit-perl-plugin.la" && cp -pR "../nbdkit-perl-plugin.la" "nbdkit-perl-plugin.la" )
make[3]: Leaving directory '/c/Users/yifangu/Documents/devel/nbdkit/plugins/perl'
Making all in python
make[3]: Entering directory '/c/Users/yifangu/Documents/devel/nbdkit/plugins/python'
/bin/sh ../../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I../..  -I../../include -I../../common/utils    -I/usr/include/python3.7m  -g -O2 -MT nbdkit_python_plugin_la-python.lo -MD -MP -MF .deps/nbdkit_python_plugin_la-python.Tpo -c -o nbdkit_python_plugin_la-python.lo `test -f 'python.c' || echo './'`python.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../.. -I../../include -I../../common/utils -I/usr/include/python3.7m -g -O2 -MT nbdkit_python_plugin_la-python.lo -MD -MP -MF .deps/nbdkit_python_plugin_la-python.Tpo -c python.c  -DDLL_EXPORT -DPIC -o .libs/nbdkit_python_plugin_la-python.o
python.c:228:1: error: external linkage required for symbol ‘create_nbdkit_module’ because of ‘dllexport’ attribute
  228 | create_nbdkit_module (void)
      | ^~~~~~~~~~~~~~~~~~~~
make[3]: *** [Makefile:638: nbdkit_python_plugin_la-python.lo] Error 1
make[3]: Leaving directory '/c/Users/yifangu/Documents/devel/nbdkit/plugins/python'
make[2]: *** [Makefile:505: all-recursive] Error 1
make[2]: Leaving directory '/c/Users/yifangu/Documents/devel/nbdkit/plugins'
make[1]: *** [Makefile:696: all-recursive] Error 1
make[1]: Leaving directory '/c/Users/yifangu/Documents/devel/nbdkit'
make: *** [Makefile:562: all] Error 2



On Mon, Mar 23, 2020 at 8:49 AM Richard W.M. Jones <rjones@redhat.com> wrote:
On Mon, Mar 23, 2020 at 12:28:12PM +0000, Richard W.M. Jones wrote:
> From: Yifan Gu <gyf304@gmail.com>
>
> The create_nbdkit_module function is intended to be exported, therefore
> the static keyword is not needed and prevents building on MSYS2.
> ---
>  plugins/python/python.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/plugins/python/python.c b/plugins/python/python.c
> index a1a0438b..adc1aaa5 100644
> --- a/plugins/python/python.c
> +++ b/plugins/python/python.c
> @@ -224,7 +224,7 @@ static struct PyModuleDef moduledef = {
>    NULL
>  };

> -static PyMODINIT_FUNC
> +PyMODINIT_FUNC
>  create_nbdkit_module (void)
>  {
>    PyObject *m;
> --

I don't believe this is correct.  We call

  PyImport_AppendInittab ("nbdkit", create_nbdkit_module);

later on so the function shouldn't need to public.  What's the actual
error when compiling this?

Rich.

--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW