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# Discussion :

Comment compiler libiec61850 pour pouvoir l'utiliser comme DLL en C# ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de calogerogigante
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Avril 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2003
    Messages : 608
    Par défaut Comment compiler libiec61850 pour pouvoir l'utiliser comme DLL en C# ?
    Bonjour,
    Je ne suis pas sûr d'être dans le bon forum, mais bon voilà, ma question concerne au final le C#.
    (Changez la rubrique du post si vous pensez que cela doit être fait).

    Voici l'exposé de mon problème. Je voudrais faire un projet en C# qui tourne autour du protocole industriel iec61850.
    Mais j'ai besoin d'une librairie open-source que j'ai beaucoup de mal à compiler.

    Cette librairie, c'est libiec61850 de mz-automation qui a été écrite en C : la voici :
    https://github.com/mz-automation/libiec61850
    On apprend dans l'intro qu'il est possible de la compiler en .DLL pour C#.
    Et mz-automation fournit aussi un wrapper pour .Net qui permet d'utiliser facilement toutes les fonctions de la librairie en C#.

    Cette librairie est d'ailleurs utilisée (sous forme de DLL aussi, mais ancienne et incomplète) dans le magnifique logiciel open-source IED-Explorer (hébergé avec des exécutables sur SourceForge) : programme qui marche très bien au demeurant.

    J'ai pris mon courage à deux mains, et j'ai tenté de compiler libiec61850.
    (Autre remarque, même si je vais utiliser cette DLL sous Windows, j'ai une intuition qui me dit que ce sera plus facile de produire cette DLL sous Linux).

    Voici mon mode opératoire (sous Ubuntu), mais je n'arrive pas à atteindre l'objectif final.

    1) d'abord je me suis assuré d'avoir un compilateur cross-platform, j'ai fait :
    sudo apt-get install gcc-mingw-w64

    2) ensuite, j'ai vérifié que j'ai un cmake récent :
    cmake --version
    3.28.3

    3) J'ai téléchargé le SDK de WinPcap, càd WpdPack_4_1_2.zip dont j'extrais le contenu Lib et Include et je les place dans les sources :
    Third_Party/WinPcap/

    4) je crée alors un dossier build dans le dossier racine de la librairie : ./libiec61850/build
    je vais dans ce dossier build et je fais : CMake avec les deux points. Ces deux points vont chercher en réalité CMakeLists.txt un niveau plus haut :
    cmake ..

    5) cela semble construire correctement un fichier make, dirait-on.

    6) ensuite je me place à nouveau dans le dossier ./libiec61850/build, et de là, dans mon terminal, je fais :
    make TARGET=WIN32

    7) là, j'ai un magnifique défilé de compilation, apparemment sans aucun message d'erreur (cool), et cela semble
    me construire :
    - un fichier compilé nommé libiec61850.so de 1,1 Mo.
    - un fichier compilé nommé libiec61850.so.1.6.0 de 1,1 Mo.
    - un fichier compilé nommé libiec61850.a de 1,8 Mo.

    Mais aucune DLL ?

    J'ai cherché partout des exemples de compilation, mais je ne sais toujours pas comment compiler en DLL à mon stade de connaissance ?
    Quelqu'un peut me dire quelle commande je dois insérer ou modifier pour obtenir cette fameuse librairie au format libiec61850.dll ?

    Un grand merci d'avance pour votre aide.

  2. #2
    Membre éclairé Avatar de calogerogigante
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Avril 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2003
    Messages : 608
    Par défaut
    Autre tentative de ma part : si je me place, avec un terminal, dans le root directory de la librairie, ./libiec61850, si j'utilise plutôt make au lieu de CMake, on a le déroulement suivant :

    >make TARGET=WIN64

    ... série de compilation avec quelques messages d'erreur ici ...

    et puis, je me retrouve avec une librairie compilée de 4,1 Mb de taille dans le sous-dossier build_win32:

    ./libiec61850/build_win32/libiec61850.a

    Mais toujours pas de DLL ?

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Le README contient plein de lien qui peuvent t'aider plutôt que d'y aller à tâtons.
    Notamment celui-là.
    https://support.mz-automation.de/doc...50/net/latest/

  4. #4
    Membre éclairé Avatar de calogerogigante
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Avril 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2003
    Messages : 608
    Par défaut
    J'ai lu tous les liens que tu montres, tous les README possible...
    Et sur le site de github, et sur le site officiel de https://libiec61850.com/.

    J'ai essayé sous Linux, et sous Windows, avec mon Visual Studio 2022, correctement configuré avec les outils C et C++, ainsi qu'avec l'installation de MinGW-w64 (sous Linux et Windows).

    J'ai tout essayé pour créer cette DLL, et je n'ai eu que des messages d'erreur décourageant ou des impasses.

    La seule chose que j'ai réussi à compiler correctement (et sans un seul message d'erreur), c'est une version de libiec61850 au format librairie statique sous Linux libiec61850.a (que j'ai décrit ci-dessus).

    J'en suis à tâtonner par manque de lignes directrices.
    Et je me suis remis à revoir le C et l'utilisation théorique de CMake pour essayer de m'en sortir.
    Et pour l'instant, je ne suis encore nulle part...

  5. #5
    Membre éclairé Avatar de calogerogigante
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Avril 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2003
    Messages : 608
    Par défaut
    Si tu peux me donner un début concret d'une piste de choses à faire pour lequel tu es sûr que j'aboutirais à la DLL utilisable en C#, je commence ta liste tout de suite chez moi...

  6. #6
    Membre éclairé Avatar de calogerogigante
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Avril 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2003
    Messages : 608
    Par défaut
    Bon, je n'abandonne pas bien sûr, jamais. J'ai donc ré-essayé la procédure sous Windows 10, avec mon Visual Studio 2022, et voici ce que j'ai fait et où j'en suis.

    1) Je charge les fichiers de la librairie libiec61850 (v1.6) depuis github et je décompresse le dossier et tous ses fichiers
    ./libiec61850

    2) je place les lib et include du WinPCap SDK dans le sous-dossier ./ThirdParty/Winpcap/

    3) je crée un dossier build à la racine du dossier de la librairie...

    4) j'ai un CMake d'installé sur mon Windows 10 : sous une fenêtre DOS, si je fais :
    >cmake --version
    - j'ai bien :
    cmake version 4.1.0-rc1

    5) je me place avec un terminal DOS dans build :

    6) je tape la commande suivante :
    cmake .. -G "Visual Studio 17 2022" -A x64

    C'est plutôt bon, cmake lance des tas de commandes qui ont l'air de bien fonctionner, et j'arrive à ceci dans mon build :

    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
    19
    20
    21
    21-07-25  15:20            71.614 ALL_BUILD.vcxproj
    21-07-25  15:20               318 ALL_BUILD.vcxproj.filters
    21-07-25  15:20            22.141 CMakeCache.txt
    21-07-25  15:20    <DIR>          CMakeFiles
    21-07-25  15:20             7.158 cmake_install.cmake
    21-07-25  15:20    <DIR>          config
    21-07-25  15:20             4.003 CPackConfig.cmake
    21-07-25  15:20             4.418 CPackSourceConfig.cmake
    21-07-25  15:20               404 CTestTestfile.cmake
    21-07-25  15:20    <DIR>          examples
    21-07-25  15:20    <DIR>          hal
    21-07-25  15:20            10.822 INSTALL.vcxproj
    21-07-25  15:20               560 INSTALL.vcxproj.filters
    21-07-25  15:20            56.544 libiec61850.sln
    21-07-25  15:20            11.297 PACKAGE.vcxproj
    21-07-25  15:20               560 PACKAGE.vcxproj.filters
    21-07-25  15:20            10.140 RUN_TESTS.vcxproj
    21-07-25  15:20               562 RUN_TESTS.vcxproj.filters
    21-07-25  15:20    <DIR>          src
    21-07-25  15:20           102.699 ZERO_CHECK.vcxproj
    21-07-25  15:20               561 ZERO_CHECK.vcxproj.filters

    et là, je ne sais pas quoi faire...

    J'ai bien sûr ouvert la solution nommée libiec61850.sln avec Visual Studio 2022, mais là, je ne sais pas ce que je dois faire ?
    Pourquoi y-a-t-il tant de fichier vcxproj ?

    Quelle acte ou commande suivante dois-je faire depuis Visual Studio 2022 pour générer les fichiers libiec61850.dll et libiec61850.lib (car sous Windows, il faut la paire .lib et .dll si j'ai bien compris) ?

Discussions similaires

  1. Comment compiler Tcl pour ARM
    Par gilles06 dans le forum Tcl/Tk
    Réponses: 0
    Dernier message: 13/11/2013, 16h08
  2. Réponses: 6
    Dernier message: 28/07/2011, 00h23
  3. Réponses: 1
    Dernier message: 25/03/2010, 18h17
  4. Réponses: 10
    Dernier message: 10/07/2009, 13h58

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