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

Outils Delphi Discussion :

Utilisation d'une DLL C# en Delphi


Sujet :

Outils Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Stagiaire
    Inscrit en
    Juin 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 1
    Par défaut Utilisation d'une DLL C# en Delphi
    Bonjour,

    Mon problème est un peu particulier et je vais tenter d'être clair en l'exposant.

    Je souhaite m'interfacer avec du code écrit en Java, dont les .jar ont été transformé en une DLL grâce à l'outil ikvm et une commande semblable à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ikvmc -out:ToBeUsed.dll -recurse:SOME_PATH\*.jar
    J'ai tenté la méthode dynamique indiquée si dessous, en utilisant la javadoc des .jar sources pour charger une fonction statique.http://www.google.com/url?q=http%3A%...FbWBxZm5HxthQQ
    Cependant, la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetProcAddress(HandleDLL, pAnsiChar('MyFunction'));
    ne renvoie pas une valeur correcte, donc le test échoue.

    Maintenant quelques données vérifiées :
    L'outil Tdump, par la commande tdump -ee -m ToBeUsed.dll ne me montre pas le contenu de la dll.
    Au sein d'un environnement dotNet (visual studio), j'ai pu importer cette dll et l'utiliser pour afficher le toString d'un objet retourné par une fonction statique. Donc la dll est fonctionnelle.

    Voici le code de la procédure Delphi:
    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
    procedure Test();
    var
      HandleDLL: THandle;
      getFlowMind: function (): TObject;
    begin
      //Chargement de la DLL
      HandleDLL := LoadLibrary(pWideChar('C:\Flowmind_Home\flowmind67All.dll'));
     
      //Si la DLL n'est pas chargée on ne continue pas
      If HandleDLL = 0 then Exit;
     
      //Récupération de l'adresse de la fonction nommée 'Somme'
      getFlowMind := GetProcAddress(HandleDLL, pAnsiChar('com.akazi.flowmind.api.access.FlowMindAccess.getFlowMind'));
     
      //Appel de la fonction si on a bien récupéré son adresse
      If Assigned(getFlowMind) then
        ShowMessage(getFlowMind.ClassName)
      Else
        ShowMessage('Error');
     
    end;

    J'en viens à ma question. Existe-t-il un outil permettant de faire cela ?
    Je n'ai pas trouvé de méthode du langage qui le permette, et à vrai dire, beaucoup de sujets à ce propos commencent à se faire vieux.

    Merci d'avance !

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    La rubrique "outils" est un choix étrange, cela aurait plus sa place dans la Section Delphi.NET ou SDK

    D'ailleurs quel Delphi ?
    Win32 comme 7 ? XE2 ?
    .NET comme Prism ?

    Transformé du Java en .NET pour ensuite une utilisation delphi ! c'est tordu !

    Est-ce que les DLL générées sont des Assembly , je suppose et non des DLL Win32 (TDump ou Dependendcy Walker afficherait les exports)

    Si Assembly, inclut-elle un Interop COM ?
    Sans Interop COM, faudrait passer par CrossTalk
    Lit le sujet Appel d'une DLL écrite en C# en Delphi, qui date d'une dizaine de jour

    Deplus, le modèle objet Delphi lui est propre !
    Ccomment veux-tu qu'un code Java converti en .NET puisse fournir un TObject avec tout le tralala de VCL, la VMT ou des RTTI,
    tu es bien naïf !

    Sinon JNI et JNA (que l'on trouve dans Indy) doivent pouvoir être utilisé pour interfacer du Delphi avec du JAVA : Approche de JNI via Delphi
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Utilisation d'une dll C++ en Delphi
    Par edudesantana dans le forum Delphi
    Réponses: 11
    Dernier message: 30/04/2015, 10h18
  2. Réponses: 0
    Dernier message: 18/03/2015, 10h23
  3. Utilisation d'une DLL créée en DELPHI
    Par JP.NUAGE dans le forum Langage
    Réponses: 6
    Dernier message: 03/06/2008, 11h40
  4. Utilisation d'une DLL Delphi en ASP
    Par [DreaMs] dans le forum ASP
    Réponses: 1
    Dernier message: 08/11/2006, 00h11
  5. Utilisation d'une dll écrite en delphi 5 dans VB6
    Par Jean-Louis dans le forum Langage
    Réponses: 4
    Dernier message: 05/08/2002, 09h19

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