IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Extensions PostgreSQL Discussion :

Développer une DLL pour postgresql.


Sujet :

Extensions PostgreSQL

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Points : 4
    Points
    4
    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.

  2. #2
    Candidat au Club
    Femme Profil pro
    Inscrit en
    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 : 4
    Points
    4
    Par défaut
    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 :
    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 :

    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.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    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?

  4. #4
    Candidat au Club
    Femme Profil pro
    Inscrit en
    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 : 4
    Points
    4
    Par défaut
    Voici en pj le fichier pg_config.h situé dans C:/PostgreSQL/include
    Fichiers attachés Fichiers attachés

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    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.

  6. #6
    Candidat au Club
    Femme Profil pro
    Inscrit en
    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 : 4
    Points
    4
    Par défaut
    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 :

    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...

    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 ?

Discussions similaires

  1. [VB.net] Probleme avec une dll pour l'enregistrer
    Par Diablo_22 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 09/08/2006, 21h41
  2. Réponses: 29
    Dernier message: 21/06/2006, 10h27
  3. [ATL][MFC?]Ecrire une dll pour ASP
    Par LEK dans le forum MFC
    Réponses: 10
    Dernier message: 11/11/2005, 18h38
  4. Réponses: 4
    Dernier message: 02/09/2005, 11h24
  5. [DLL] Utilisation d'une DLL pour utiliser serveur Firebird
    Par sekiryou dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/08/2004, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo