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 :

Appel d'une Dll


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Par défaut Appel d'une Dll
    Bonjour,

    Désolé si le sujet du topic reste vague mais ne sachant pas trop quel concept est concerné par mon problème (je pense qu'il me manque une interface...) il me paraissait difficile de mieux préciser ceui-ci sans risquer d'être complètement à côté de la plaque...

    Je souhaiterais appeler une méthode implémentée dans une dll (depuis un langage propriétaire très basique ne gérant pas le code manage) créé en C# sans indiquer le nom de la classe dans laquelle est contenu cette méthode...

    Je ne sais pas si je suis très clair donc voila a quoi ressemble ma dll:

    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
     
    using System;
    using System.Collections.Generic;
    using System.Text;
     
    namespace noManagedDll
    {
        unsafe static public class NoManagedC1ass
        {
            public static void test()
            {
                for (int i = 0; i < 50000; i++)
                {
                    Console.WriteLine(i.ToString());
                }
            }
        }
    }
    Ce code me génère a la compilation une dll de nom noManagedDll.dll dont la méthode test() fonctionne parfaitement si appelé depuis un programme c# par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    noManagedDll.NoManagedClass.test();
    Hors je souhaiterais que celle-ci puisse être appelé sans préciser le nom de la classe soit :
    Merci.

  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 : 43
    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
    Par défaut
    Réponse courte : tu ne peux pas appeler de code managé depuis du code non-managé

    Réponse longue (quoique pas tant que ça...) : tu peux, mais tu vas galérer... Tu as une petite chance de t'en sortir si le langage de ta DLL non managé est capable d'utiliser COM : dans ce cas, il faut que tu mettes un attribut ComVisible(true) sur ta classe C#, et que tu utilises le mécanisme du langage de ta DLL pour créer des objets COM. Par contre, sans utiliser le nom de la classe... pas possible a priori, puisqu'en .NET toutes les méthodes sont forcément dans une classe

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Par défaut
    Le but n'est pas d'appeler du code non managé depuis du code managé mais d'appeler du code C# non managé (utilisation de "unsafe" qui si je ne me trompe pas permet d'écrire du code non managé) depuis du code également non managé (langage propriétaire datant d'une bonne quinzaine d'année et ayant peu évolué...).

    Merci pour ta réponse. Je ne te cacherais pas que je ne savais pas ce qu'était un objet COM avant que tu m'en parles. D'après les infos que j'ai pu trouvé sur notre cher et tendre ami google c'est un autre nom pour les activex, le langage propriétaire que j'utilise ne semble pas gérer ce type d'objet (cela dit ce langage a déjà beaucoup de mal à se gérer lui-même donc je ne suis pas vraiment étonné )

  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 : 43
    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
    Par défaut
    Citation Envoyé par koktel_dfr Voir le message
    Le but n'est pas d'appeler du code non managé depuis du code managé mais d'appeler du code C# non managé (utilisation de "unsafe" qui si je ne me trompe pas permet d'écrire du code non managé)
    Le code unsafe en C# est managé aussi... c'est juste qu'il ne peut pas être vérifié par le CLR. On ne peut pas écrire de code natif en C#

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Par défaut
    Bah il ne me reste plus qu'une seule solution alors... retour au bon vieux langage C

    Je crois que je peux dire adieu aux belles interfaces graphiques realisable en C#... quoique on doit pouvoir faire du code utilisant les MFC et non manage en C++, enfin bon je ne suis plus dans la bonne section du forum là

    Bon bah merci pour ton aide en tout cas, j'exclue la solution C# qui est semble-t-il impossible.

  6. #6
    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 : 43
    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
    Par défaut
    Je comprends pas trop ton problème, là...
    Si tu as des trucs que tu dois faire en code natif, tu peux très bien avoir ton interface graphique en C#, et appeler le code natif à partir du C#. Dans ce sens là ça se fait assez facilement...
    En tous cas ça me semble bizarre de vouloir appeler l'interface graphique à partir du code natif, c'est plutôt le contraire qu'il faudrait faire

Discussions similaires

  1. Appel d'une DLL dans une servlet
    Par blan dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 21/02/2007, 18h35
  2. Erreur lors de l'appel d'une DLL créée avec Visual
    Par WELCOMSMAIL dans le forum C++Builder
    Réponses: 6
    Dernier message: 06/09/2006, 15h53
  3. PB appel d'une DLL
    Par maveric dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 10/08/2006, 19h17
  4. Appel d'une Dll dans le dossier courant.
    Par méphistopheles dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/07/2006, 21h00
  5. Appel d'une dll (c++) dans un programme c++
    Par cout dans le forum C++
    Réponses: 2
    Dernier message: 01/06/2006, 14h52

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