Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Invité de passage
    Profil pro senav vaness
    Inscrit en
    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.

  2. #2
    Invité de passage
    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 : 3
    Points
    3

    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
    Expert Confirmé
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    1 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 803
    Points : 2 583
    Points
    2 583

    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
    Invité de passage
    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 : 3
    Points
    3

    Par défaut

    Voici en pj le fichier pg_config.h situé dans C:/PostgreSQL/include
    Fichiers attachés Fichiers attachés

  5. #5
    Expert Confirmé
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    1 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 803
    Points : 2 583
    Points
    2 583

    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
    Invité de passage
    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 : 3
    Points
    3

    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 ?

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •