Précédent   Forum du club des développeurs et IT Pro > Bases de données > PostgreSQL > Extensions
Extensions Forum d'entraide sur les plugins d'extension de PostgreSQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 31/03/2010, 19h31   #1
vaness7
Invité de passage
 
senav vaness
Inscription : mars 2010
Messages : 4
Détails du profil
Informations personnelles :
Nom : senav vaness

Informations forums :
Inscription : mars 2010
Messages : 4
Points : 0
Points : 0
Par défaut Développer une DLL pour postgresql.

Bonjour,

Je voudrai ajouter un nouveau type de donnée,accompagné d'un ensemble d'opérations,à postgresql(sous windows).
Alors je cherche s'il y avait un petit tuto qui montre comment développer des fonctions c (dll) pour postgresql avec DevCpp.

Merci d'avance.
vaness7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 15h21   #2
aubo59
Invité de passage
 
Femme
Inscription : août 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : août 2011
Messages : 3
Points : 3
Points : 3
Bonjour,

Je cherche également pour la première fois à développer une dll pour PostgreSQL. J'ai des erreurs à la compilation qui portent sur les fichiers postgres.h et fmgr.h inclus dans mon projet.

Système : Windows XP
Compilateur : MinGW
Version de PostgreSQL : 9.0.4-1
IDE : Eclipse

Le problème semblait résolu par le message suivant : Toutefois, rien de cela ne fonctionne chez moi. Pour tester, je compile un fichier simplif.cpp qui contient uniquement la ligne suivante :
#include "postgres.h"

La commande de compilation générée par Eclipse est la suivante :
Citation:
g++ -IC:/PostgreSQL/9.0/include/server -IC:/PostgreSQL/9.0/include -IC:/PostgreSQL/9.0/include/server/port/win32 -O0 -g3 -Wall -c -fmessage-length=0 -o simplif.o ..\simplif.cpp
et j'obtiens les messages suivants :

Citation:
In file included from C:/PostgreSQL/9.0/include/server/postgres.h:47:0,
from ..\simplification.cpp:23:
C:/PostgreSQL/9.0/include/server/c.h:284:2: error: #error must have a working 64-bit integer datatype
In file included from ..\simplification.cpp:23:0:
C:/PostgreSQL/9.0/include/server/postgres.h:550:28: warning: 'Int64GetDatum' initialized and declared 'extern'
C:/PostgreSQL/9.0/include/server/postgres.h:550:28: error: 'int64' was not declared in this scope
Merci d'avance pour votre aide.
aubo59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2011, 13h24   #3
estofilo
Modérateur
 
Inscription : octobre 2008
Messages : 1 708
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 708
Points : 2 355
Points : 2 355
Il doit y a voir un fichier pg_config.h au même niveau que postgres.h contenant des définitions qui pourraient expliquer l'erreur "must have a working 64-bit integer datatype"
Peux-tu attacher ce fichier à la discussion?
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 11h14   #4
aubo59
Invité de passage
 
Femme
Inscription : août 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : août 2011
Messages : 3
Points : 3
Points : 3
Voici en pj le fichier pg_config.h situé dans C:/PostgreSQL/include
Fichiers attachés
Type de fichier : h pg_config.h (21,1 Ko, 2 affichages)
aubo59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 12h46   #5
estofilo
Modérateur
 
Inscription : octobre 2008
Messages : 1 708
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 708
Points : 2 355
Points : 2 355
Les définitions du fichier ne correspondent effectivement pas à une compilation avec MinGW. Comme les packagers de postgres pour windows utilisent MSVC, ce n'est pas très étonnant.
A priori les extensions en C devraient être compilées avec le même compilateur que le serveur lui-même.
Donc le plus sûr serait de compiler postgres toi-même avec MingW et MSYS à partir des sources, ce qui au passage générerait le fichier pg_config.h qui convient.
C'est faisable, personnellement je l'ai fait pour la 9.0.1, je sais que la compil passe avec MingW en 32 bits.

Ou alors compiler l'extension avec MSVC.
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 17h17   #6
aubo59
Invité de passage
 
Femme
Inscription : août 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : août 2011
Messages : 3
Points : 3
Points : 3
Merci pour ces conseils. J'ai essayé la compilation avec MSVC, mais je débute dans l'utilisation de ce compilateur.

Voici la commande de compilation générée par Eclipse :

Citation:
cl /c /EHs /MD /Zi /IE:\PostgreSQL\include /IE:\PostgreSQL\include\server /IE:\PostgreSQL\include\server\port\win32 /nologo /Fosimplif.obj ..\simplif.cpp
Et les erreurs renvoyées...

Citation:
e:\postgresql\include\server\pg_config_os.h(106) : warning C4005: 'EIDRM' : macro redefinition
C:\Program Files\Microsoft Visual Studio 10.0\VC\Include\errno.h(103) : see previous definition of 'EIDRM'
e:\postgresql\include\server\pg_config_os.h(267) : warning C4005: 'EMSGSIZE' : macro redefinition
C:\Program Files\Microsoft Visual Studio 10.0\VC\Include\errno.h(107) : see previous definition of 'EMSGSIZE'
e:\postgresql\include\server\pg_config_os.h(268) : warning C4005: 'EAFNOSUPPORT' : macro redefinition
C:\Program Files\Microsoft Visual Studio 10.0\VC\Include\errno.h(94) : see previous definition of 'EAFNOSUPPORT'
e:\postgresql\include\server\pg_config_os.h(269) : warning C4005: 'EWOULDBLOCK' : macro redefinition
C:\Program Files\Microsoft Visual Studio 10.0\VC\Include\errno.h(132) : see previous definition of 'EWOULDBLOCK'
e:\postgresql\include\server\pg_config_os.h(270) : warning C4005: 'ECONNRESET' : macro redefinition
C:\Program Files\Microsoft Visual Studio 10.0\VC\Include\errno.h(100) : see previous definition of 'ECONNRESET'
e:\postgresql\include\server\pg_config_os.h(271) : warning C4005: 'EINPROGRESS' : macro redefinition
C:\Program Files\Microsoft Visual Studio 10.0\VC\Include\errno.h(104) : see previous definition of 'EINPROGRESS'
e:\postgresql\include\server\pg_config_os.h(272) : warning C4005: 'ENOBUFS' : macro redefinition
C:\Program Files\Microsoft Visual Studio 10.0\VC\Include\errno.h(111) : see previous definition of 'ENOBUFS'
e:\postgresql\include\server\pg_config_os.h(273) : warning C4005: 'EPROTONOSUPPORT' : macro redefinition
C:\Program Files\Microsoft Visual Studio 10.0\VC\Include\errno.h(127) : see previous definition of 'EPROTONOSUPPORT'
e:\postgresql\include\server\pg_config_os.h(274) : warning C4005: 'ECONNREFUSED' : macro redefinition
C:\Program Files\Microsoft Visual Studio 10.0\VC\Include\errno.h(99) : see previous definition of 'ECONNREFUSED'
e:\postgresql\include\server\pg_config_os.h(276) : warning C4005: 'EOPNOTSUPP' : macro redefinition
C:\Program Files\Microsoft Visual Studio 10.0\VC\Include\errno.h(122) : see previous definition of 'EOPNOTSUPP'
e:\postgresql\include\server\pg_config_os.h(203) : error C2011: 'timezone' : 'struct' type redefinition
e:\postgresql\include\server\pg_config_os.h(203) : see declaration of 'timezone'
e:\postgresql\include\server\pg_config_os.h(212) : error C2011: 'itimerval' : 'struct' type redefinition
e:\postgresql\include\server\pg_config_os.h(212) : see declaration of 'itimerval'
Build error occurred, build is stopped
Auriez-vous des idées sur l'origine du problème ?
aubo59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 05h07.


 
 
 
 
Partenaires

Hébergement Web