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

C++Builder Discussion :

Créer une dll de la libmodbus (C++ builder 10.1 Berlin)


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Homme Profil pro
    amateur
    Inscrit en
    Mai 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Mai 2018
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Créer une dll de la libmodbus (C++ builder 10.1 Berlin)
    Bonjour,

    Je voudrais dialoguer avec un esclave (module d'entrées/sorties) sur (USB à) RS485 en modbus RTU, pour le piloter avec un automate logiciel (https://sites.google.com/view/apimou/accueil).

    Je pense que la solution la plus rapide et la moins onéreuse est d'utiliser la libmodbus (libmodbus.org/documentation/).

    Sous C++ builder 10.1 Berlin j'ai essayé de créer les .lib et .dll, mais ça ne marche pas et je patauge.

    J'ai suivi les indications figurant dans ce topic (https://www.developpez.net/forums/d1...libmodbus-xe3/) mais rien n'y fait, j'ai plein d'erreurs dans ws2def.h et winsock2.h.

    Quelqu'un aurait-il une idée ?

    Merci.

  2. #2
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut
    il semblerait qu'il y ait de grandes différences entre RadStudio 10.1 starter et les versions précédentes (2010)
    en effet sous 2010 aucune problème pour générer la librairie ce qui n'est plus le cas dans RadStudio 10.1
    un bug...
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  3. #3
    Membre à l'essai
    Homme Profil pro
    amateur
    Inscrit en
    Mai 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Mai 2018
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Bon... je vais chercher une autre solution. Merci !

  4. #4
    Membre à l'essai
    Homme Profil pro
    amateur
    Inscrit en
    Mai 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Mai 2018
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Bon, finalement ça compile, mais il faut prendre les sources ici : https://github.com/stephane/libmodbus.

    Après il faut bidouiller un peu, entre autres j'ai dû mettre en commentaires des lignes relatives aux versions major/minor/micro (?). Je n'ai pas renommé les fichiers en remplaçant "-" par "_", pas ajouté de directive de compilation et pas intégré ws2_32.lib au projet (on verra). Bref, j'ai pas tout capté (voire rien) mais j'ai un .lib et un .dll.

    Je ne sais pas encore si ça fonctionne, je ferai un retour.

  5. #5
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut
    j'ai continué à investiguez sur cette problématique
    mes conclusions sont les suivantes:
    1. En absence de directive de compilation une DLL ainsi qu'un LIB est généré mais malheureusement vide
    2. Du a certains changements dans le SDK la version 2010 nécessite la librairie WS32 ce qui n'est pas nécessaire avec les versions ultérieurs de RadStudio
    3. Si ta dll doit être compatible avec d'autres compilateurs (MING,MS) le préfixe d'appel de fonctions doit être _STDCALL
    4. Pour générer correctement ta dll il est nécessaire d'ajpouter la directive de compilation DLLBUILD
    5. j'ai générer 1 DLL et sa librarie en mode Debug et Release


    pour modifier l'appel de fonctions : Nom : ConfigCompilateur.PNG
Affichages : 401
Taille : 15,5 Ko

    pour ajouter une directive de compilation :Nom : DirectiveCompilation.PNG
Affichages : 469
Taille : 13,6 Ko

    ci-joint un ZipFile contenant le projet ainsi que les fichier (.H)que j'ai du modifier
    contenant le projet les DLL et .LIB


    cordialement
    Fichiers attachés Fichiers attachés
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  6. #6
    Membre à l'essai
    Homme Profil pro
    amateur
    Inscrit en
    Mai 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Mai 2018
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Excellent, j'essaye tout ça, merci beaucoup !

  7. #7
    Membre à l'essai
    Homme Profil pro
    amateur
    Inscrit en
    Mai 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Mai 2018
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Je crois que je vais passer pour un boulet, mais j'aurais encore besoin de ton aide...

    Je veux utiliser la DLL en lien implicite :

    - j'ai ajouté au projet le .lib,
    - j'ai mis le .dll dans le répertoire de mon projet,
    - dans le .cpp de ma fiche, je déclare le prototype des fonctions que je veux utiliser, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern "C" __declspec(dllimport) modbus_t *modbus_new_rtu(const char *, int , char , int , int );
    Bon, ça ne marche pas, je me doute qu'il y a un problème avec le modbus_t

    Si j'essaye avec une autre fonction qui n'implique pas de structure, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern "C" __declspec(dllimport) void modbus_set_float(float , uint16_t *);
    ça ne marche pas non plus.

    Je confesse que j'ai un peu un niveau ras des paquerettes, pourrais-tu me mettre sur la voie ?

    Merci.

  8. #8
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut,
    Si tu a utilié la dll fournie,la convention d'appel est __stdcall ce qui signifie que ton application doit également utilisé cette convention
    si tu utilise la library fournie, il suffit de rajouter à ton application le fichier d’entête Modbus.h

    Autrement tu peux à l'aide du projet fournit une nouvelle dll et library avec la convention d'appel C

    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  9. #9
    Membre à l'essai
    Homme Profil pro
    amateur
    Inscrit en
    Mai 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Mai 2018
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Ça y est, les relais claquent !
    Mille MERCI pour ton aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment créer une dll à parti d'un programme en C
    Par laetous dans le forum Windows
    Réponses: 5
    Dernier message: 02/09/2006, 11h05
  2. [VB6]comment créer une dll
    Par kboo dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 12/04/2006, 14h32
  3. Comment (ou peut on) créer une DLL .NET ?
    Par Mickey.jet dans le forum Delphi .NET
    Réponses: 4
    Dernier message: 02/04/2006, 15h54
  4. Comment créer une dll Win32 sous Delphi ?
    Par Mickey.jet dans le forum Langage
    Réponses: 8
    Dernier message: 16/06/2005, 15h38
  5. [MFC]Créer une DLL BIS
    Par Furtif_00 dans le forum MFC
    Réponses: 5
    Dernier message: 28/06/2004, 14h48

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