> Date: Fri, 3 Sep 2010 09:41:17 +0200 > Subject: Re: Compiling extension C with MingW in windows, Error... > From: magnus@xxxxxxxxxxxx > To: listas_quijada@xxxxxxxxxxx > CC: pgsql-general@xxxxxxxxxxxxxx > > On Fri, Sep 3, 2010 at 5:31 AM, Edwin Quijada > <listas_quijada@xxxxxxxxxxx> wrote: > > Hi, I am tryng to compile a C extension in windows using Minigw but always I > > get the same error > > > > C:\Program Files\PostgreSQL\8.3\share\exte_c>C:\mingw\bin\gcc -shared -o > > pg2.dll > > pg2.o > > pg2.o:pg2.c:(.text+0x86): undefined reference to > > `_imp__CurrentMemoryContext' > > pg2.o:pg2.c:(.text+0x92): undefined reference to `MemoryContextAlloc' > > collect2: ld returned 1 exit status > > > > This error is just when it links. > > You need to link against postgres.exe to get access to these symbols. > I don't recall if the mingw linker allows you to just specify the EXE > file these days, but I think it does. If not, you'll need to create an > import library from the EXE and link to that (the binary distribution > only ships with import libraries for MSVC, but mingw can't use > standard windows import libraries, so you need to create your own > there) Magnus how can I linking against postgres.exe I mean the gcc line. I did others function and worked fine This is the function that I did and worked, with this code I did a foo.dll and added this to postgresql. #include "postgres.h" #include <string.h> #include "fmgr.h" #ifdef PG_MODULE_MAGIC PG_MODULE_MAGIC; #endif /* by value */ PG_FUNCTION_INFO_V1(add_one); Datum add_one(PG_FUNCTION_ARGS) { int32 arg = PG_GETARG_INT32(0); PG_RETURN_INT32(arg + 1); } *-------------------------------------------------------* *-Edwin Quijada *-Developer DataBase *-JQ Microsistemas *-Soporte PostgreSQL *-www.jqmicrosistemas.com *-809-849-8087 *-------------------------------------------------------* |