Re: Building Windows Server Extensions Using VC++ 2005 - Mailing list pgsql-hackers
From | Bruce Momjian |
---|---|
Subject | Re: Building Windows Server Extensions Using VC++ 2005 |
Date | |
Msg-id | 200603050445.k254j7S23291@candle.pha.pa.us Whole thread Raw |
In response to | Re: Building Windows Server Extensions Using VC++ 2005 (Charlie Savage <cfis@interserv.com>) |
List | pgsql-hackers |
Charlie Savage wrote: > Hi everyone, > > Thanks for the feedback. The reason for building extensions with MSVC > on windows is to get access to the Micrsoft debugging tools since as far > as I can see MingW/GDB cannot debug dynamically loaded dlls on the > Windows platform (or at least I haven't succeeded at doing it). > > Anyway, with the few minor tweaks mentioned this seems to work fine. I > guess I would be surprised if it didn't since MinGW is commonly used for > both creating and using DLLs on the Windows platform that integrate with > programs and dlls built with VC++. Other examples that work fine are > building extensions for Python and Ruby using MingW, when both runtimes > are built with VC++ (so the opposite case). Of course, this > compatibility might just be limited to the MinGW / VC++ combination, but > that's all you need for this to work. OK, I improved the STRINGS_H macro check and added DLLIMPORT in case Win32 users don't export everything. Added comments. This is all 8.2 stuff. -- Bruce Momjian http://candle.pha.pa.us SRA OSS, Inc. http://www.sraoss.com + If your life is a hard drive, Christ can be your backup. + Index: src/include/c.h =================================================================== RCS file: /cvsroot/pgsql/src/include/c.h,v retrieving revision 1.197 diff -c -c -r1.197 c.h *** src/include/c.h 3 Mar 2006 21:35:46 -0000 1.197 --- src/include/c.h 5 Mar 2006 04:39:27 -0000 *************** *** 57,62 **** --- 57,64 ---- #else #if defined(_MSC_VER) || defined(__BORLANDC__) #define WIN32_CLIENT_ONLY + /* Some use MinGW-generated pg_config.h but MSVC for extensions. */ + #undef HAVE_STRINGS_H #endif #endif #include "postgres_ext.h" *************** *** 66,73 **** #include <string.h> #include <stddef.h> #include <stdarg.h> ! /* Some use MinGW-generated pg_config.h but MSVC for extensions. */ ! #if defined(HAVE_STRINGS_H) && !defined(WIN32_CLIENT_ONLY) #include <strings.h> #endif #include <sys/types.h> --- 68,74 ---- #include <string.h> #include <stddef.h> #include <stdarg.h> ! #ifdef HAVE_STRINGS_H #include <strings.h> #endif #include <sys/types.h> Index: src/include/fmgr.h =================================================================== RCS file: /cvsroot/pgsql/src/include/fmgr.h,v retrieving revision 1.40 diff -c -c -r1.40 fmgr.h *** src/include/fmgr.h 15 Oct 2005 02:49:41 -0000 1.40 --- src/include/fmgr.h 5 Mar 2006 04:39:28 -0000 *************** *** 293,302 **** /* Expected signature of an info function */ typedef Pg_finfo_record *(*PGFInfoFunction) (void); ! /* Macro to build an info function associated with the given function name */ ! #define PG_FUNCTION_INFO_V1(funcname) \ ! extern Pg_finfo_record * CppConcat(pg_finfo_,funcname) (void); \ Pg_finfo_record * \ CppConcat(pg_finfo_,funcname) (void) \ { \ --- 293,305 ---- /* Expected signature of an info function */ typedef Pg_finfo_record *(*PGFInfoFunction) (void); ! /* ! * Macro to build an info function associated with the given function name. ! * Win32 loadable functions usually link with 'dlltool --export-all', but it ! * doesn't hurt to add DLLIMPORT in case they don't. ! */ #define PG_FUNCTION_INFO_V1(funcname) \ ! extern DLLIMPORT Pg_finfo_record * CppConcat(pg_finfo_,funcname) (void); \ Pg_finfo_record * \ CppConcat(pg_finfo_,funcname) (void) \ { \
pgsql-hackers by date: