Sujet : Développement de fonction C sous Postgre pour renvoyer des RECORD et des SET OF

Configuration : Postgre 8.2 (et 8.3) sur OS Windows XP, compilation sous Dev Cpp


Bonjour,

Lorsque je cherche à compiler ma dll (pour créer mes fonctions C sous PostGre) j'ai un problème récurrent avec les fonctions définies dans palloc.h

Ainsi lorsque j'utilisais palloc() j'avais l'erreur suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
  [Linker error] undefined reference to `libpostgres_a_iname' 
  [Linker error] undefined reference to `libpostgres_a_iname' 
  [Linker error] undefined reference to `_nm__CurrentMemoryContext'
En parcourant des forums j'ai vu qu'il était possible d'utiliser pgport_palloc à la place de palloc. Cela m'a permis de résoudre mon problème.

Mais maintenant que je cherches à utiliser des SRF pour renvoyer des SET OF, j'ai le même problème qui survient avec l'utilisation de :

MemoryContextSwitchTo()

Quelqu'un aurait-il une idée ?

Notes :

1- MemoryContext monContext; ne pose pas de problème par contre.

2- Dans palloc.h on peut lire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*
 * MemoryContextSwitchTo can't be a macro in standard C compilers.
 * But we can make it an inline function when using GCC.
 */
#ifdef __GNUC__
 
static __inline__ MemoryContext
MemoryContextSwitchTo(MemoryContext context)
{
	MemoryContext old = CurrentMemoryContext;
 
	CurrentMemoryContext = context;
	return old;
}
#else
 
extern MemoryContext MemoryContextSwitchTo(MemoryContext context);
#endif   /* __GNUC__ */
3- Normalement je linke avec libpostgres.a uniquement mais pour tester j'ai linké avec toutes celles présentes dans le repertoire lib de postgre. Ca ne change rien.

Si ça inspire quelqu'un ????

Cordialement,