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 :

Débutant : créer une DLL en C# pour LabVIEW


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 16
    Points : 13
    Points
    13
    Par défaut Débutant : créer une DLL en C# pour LabVIEW
    Bonjour, après avoir épuisé tous les liens google que j'ai trouvé, j'implore votre aide j'ai trouvé plein d'infos redondantes, mais ce que je fait n'est pas bon. Je souhaite créer un fichier .dll en C#, et l'utiliser sous LabVIEW.

    Pour ce faire, je crée une nouvelle ClassLibrary avec VisualStudio2010, j'ajoute le code suivant dans le fichier Class1.cs

    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace ClassLibrary1
    {
        public class Class1
        {
            public static long Add(long i, long j)
            {
                return (i + j);
            }
     
            public static long Multiply(long x, long y)
            {
                return (x * y);
            }
     
        }
    }
    Dans Properties/AssemblyInfo.cs, je remplace [assembly: ComVisible(false)] par [assembly: ComVisible(true)].
    Je compile
    Je vais chercher le fichier.dll et j'essaie sous LabVIEW... et ça ne marche pas...

    Quelqu'un pourrait-il me dire les étapes exactes à suivre pour réaliser la plus simple DLL qui soit ???
    Merci d'avance.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Je ne connais pas LabView, mais si c'est basé sur COM, essaie de mettre aussi l'attribut ComVisible sur la classe et sur les méthodes (c'est juste une idée, je suis pas sûr que ça marche...)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Bonjour Tomlev, pourriez-vous m'indiquer comment mettre l'attribut ComVisible sur la classe et les méthodes ? Quelles lignes ajouter et où? J'ai essayé de les ajouter dans le Class1.cs mais je me retrouve avec des erreurs à chaque compilation.

    Pour info, LabVIEW dispose d'une fonction CallLibrary qui me permet de travailler avec Kernel32.dll et user32.dll (j'aimerais avoir un fonctionnement similaire à ces dll). Quant au fait qu'il soit basé sur "COM", je suppose puisque je retrouve ce terme dans l'aide LabVIEW.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        [ComVisible(true)]
        public class Class1
        {
            [ComVisible(true)]
            public static long Add(long i, long j)
            {
                return (i + j);
            }
     
            ...
    Pour info, LabVIEW dispose d'une fonction CallLibrary qui me permet de travailler avec Kernel32.dll et user32.dll (j'aimerais avoir un fonctionnement similaire à ces dll).
    Ah ben là c'est pas du COM, c'est du code natif... on ne peut pas générer de code natif en C#. Mais peut-être que COM est aussi supporté...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    J'ai essayé le code, mais ça ne passe pas... ComVisible est souligné en "zigzagué rouge" dans l'éditeur et le compilateur ne le prend pas (une erreur est générée).

    on ne peut pas générer de code natif en C#
    Hein hein... Dans ce cas, je vais essayer avec C++... Merci !!

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Points : 2 331
    Points
    2 331
    Par défaut
    Pour rendre sa classe visible en COM : clic-droit sur ton projet, sélectionne propriétés, dans l'onglet Application, clic sur le bouton Assembly information, puis coche Make Assembly com visible.

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par julienAu Voir le message
    J'ai essayé le code, mais ça ne passe pas... ComVisible est souligné en "zigzagué rouge" dans l'éditeur et le compilateur ne le prend pas (une erreur est générée).
    Il doit te manquer un import de namespace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using System.Runtime.InteropServices;
    Citation Envoyé par Arnard Voir le message
    Pour rendre sa classe visible en COM : clic-droit sur ton projet, sélectionne propriétés, dans l'onglet Application, clic sur le bouton Assembly information, puis coche Make Assembly com visible.
    il l'a déjà fait manuellement dans l'AssemblyInfo.cs (cf.premier post)

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    Bonjour Mon problème est résolu !!!

    Il doit te manquer un import de namespace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    using System.Runtime.InteropServices;
    Effectivement, le compilateur prend désormais bien les modifications :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [ComVisible(true)]
    Cependant la dll générée par C# ne fonctionne pas.

    Pour créer une dll qui marche avec LabVIEW, j'ai utilisé C++, et c'est très simple !!!! J'ai pris le premier tutoriel que j'ai rencontré sur google, j'ai essayé et ça a marché. C'est donc certainement le problème de code natif ou pas qui a fait la différence.

    En tout cas merci beaucoup pour votre aide !!!!

  9. #9
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Points : 2 331
    Points
    2 331
    Par défaut
    TomLev : passer par la partie priopriétés aurait généré automatiquement le using, et la génération du Guid si besoin en était...

    Cool pour toi julienAu

  10. #10
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    et celà dit,

    rien n'empeche une DLL Natif C++ de s'appuyer sur du code C# pour faire un travail....

    Est-ce utile ? la question reste posée mais en tout cas, c'est tout à fait possible !!!
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

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

Discussions similaires

  1. La bonne méthode pour créer une DLL ?
    Par tintin72 dans le forum Windows
    Réponses: 2
    Dernier message: 18/05/2008, 11h26
  2. [LabView 8.5][Débutant] Créer une base de données
    Par yoann23 dans le forum LabVIEW
    Réponses: 2
    Dernier message: 13/03/2008, 16h34
  3. [débutant C#] créer une DLL en C#
    Par leo2v2o dans le forum C#
    Réponses: 7
    Dernier message: 17/12/2007, 17h49
  4. [débutant] Créer une nouvelle méthode pour un objet
    Par gvdmoort dans le forum Ruby on Rails
    Réponses: 5
    Dernier message: 05/12/2007, 08h57
  5. Réponses: 21
    Dernier message: 23/05/2007, 16h16

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