Thread: Compiling and Linking Dynamically-Loaded Functions on Windows

Compiling and Linking Dynamically-Loaded Functions on Windows

From
Mariano Reingart
Date:
There is no Windows (MSVC or MinGW) section to compile shared libraries (DLL):
http://www.postgresql.org/docs/9.0/static/xfunc-c.html#DFUNC

This is intentional, as it may be incompatible/hard?
Ie. can mingw dll be used with a msvc build?

This is a working example with mingw:
C:\mingw\bin\gcc.exe -O2 -Wall -Wmissing-prototypes -Wpointer-arith
-Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing
-fwrapv -I. -I. -I../src/include -I.../src/include/port/win32
-DEXEC_BACKEND "-I.../src/include/port/win32" -c -o foo.o foo.c
C:\mingw\bin\gcc.exe -shared -o foo.dll foo.o

-fPIC seems not needed for this platform, but should -mms-bitfields
flag be used?

PGXS cannot be used directly as it is not included with the one click
installer (pg_config --pgxs returns an invalid path, no makefile
found).

Do you think this could be included in the docs?
(recently we had a discussion about this in the spanish mailing list,
and seems to be unclear for most of us).

Best regards,

Mariano Reingart
http://www.arpug.com.ar
http://www.sistemasagiles.com.ar
http://reingart.blogspot.com

Re: Compiling and Linking Dynamically-Loaded Functions on Windows

From
Robert Haas
Date:
On Wed, Aug 25, 2010 at 4:04 PM, Mariano Reingart <reingart@gmail.com> wrote:
> There is no Windows (MSVC or MinGW) section to compile shared libraries (DLL):
> http://www.postgresql.org/docs/9.0/static/xfunc-c.html#DFUNC
>
> This is intentional, as it may be incompatible/hard?
> Ie. can mingw dll be used with a msvc build?
>
> This is a working example with mingw:
> C:\mingw\bin\gcc.exe -O2 -Wall -Wmissing-prototypes -Wpointer-arith
> -Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing
> -fwrapv -I. -I. -I../src/include -I.../src/include/port/win32
> -DEXEC_BACKEND "-I.../src/include/port/win32" -c -o foo.o foo.c
> C:\mingw\bin\gcc.exe -shared -o foo.dll foo.o
>
> -fPIC seems not needed for this platform, but should -mms-bitfields
> flag be used?
>
> PGXS cannot be used directly as it is not included with the one click
> installer (pg_config --pgxs returns an invalid path, no makefile
> found).
>
> Do you think this could be included in the docs?
> (recently we had a discussion about this in the spanish mailing list,
> and seems to be unclear for most of us).

If we can figure out what the right thing to do is, +1 from me for
adding it to the docs.  But the discussion of what the right thing to
do is should probably happen on pgsql-hackers, rather than here.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise Postgres Company