I have been creating some user defined C functions using minGW and postgreSQL 8.3. Everything works great when I use integers, timestamps, points, etc. I have compiled, linked, created, and tested multiple function and aggregates. The problem occurs when I have a text parameter and need to use PG_GETARG_TEXT_P(n). The code compiles just fine but linking fails. Here is an example: #include "postgres.h" #include "fmgr.h" PG_MODULE_MAGIC; PG_FUNCTION_INFO_V1(function); Datum function(PG_FUNCTION_ARGS) { text *t = PG_GETARG_TEXT_P(1); int32 i = PG_GETARG_INT32(0); PG_RETURN_INT32(i+1); } The error: X)function_name.o:function_name.c: undefined reference to `pg_detoast_datum' If I comment out the text *t line then it compiles, links, and executes just fine. The problem (I am assuming it is the same problem) also manifests itself when I make a call to palloc. I get 2 errors X) finalagent.o:finalagent.c: undefined reference to `_imp__CurrentMemoryContext' X) finalagent.o:finalagent.c: undefined reference to `MemoryContextAlloc' Some people have said that this error should just be ignored and it will sort itself out at run-time. That sounds swell but how do I get my linker to ignore these errors? Other people have said that pg_detoast_datum is a backend function and shouldn't be referenced at all, but it is right there in fmgr.h which is obviously required for creating functions under the V1 calling convention. For reference, I am on Windows XP SP2. I installed postgreSQL 8.3 from the msi and selected to include the Development components (Include Files, Library Files, Tools and utilities). The compiler is including the following directories: C:\PostgreSQL\8.3\include C:\PostgreSQL\8.3\include\server C:\PostgreSQL\8.3\include\server\port\win32" I added both C:\PostgreSQL\8.3\lib and C:\PostgreSQL\8.3\bin to my linker hoping that maybe it would work. It didn't. Any information, insight, tips, or criticism would be welcomed and appreciated. -Subordin8