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

API, COM et SDKs Delphi Discussion :

DLL Delphi sous C#


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut DLL Delphi sous C#
    Hello,

    j'ai posé une question sur le forum C#...mais comme c'est une DLL Delphi, je fais un lien ici pour ceux qui pourraient répondre

    https://www.developpez.net/forums/d2...mport-wchar_t/

    La question, c'est comme déclarer en C# une Interface Delphi qui retourne un PChar :/

    Merci
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  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
    LOL, Si tu as une réponse sur l'interopérabilité en C# sur le forum C#, j'en serais surpris, aucun développeur C# ne savait faire la différence en une DLL WinApi, DLL COM et une DLL Assembly, pour eux tout est assembly et ne savent même pas utiliser leur équivalent TDUMP pour reconnaitre ce que contient la DLL soit "dumpbin.exe /exports"

    J'utiliserais des WideString pour utiliser le partage de mémoire OLE au lieu du PChar même si en théorie, en lecture seule ça doit être lu

    tu as pensé au SafeCall au lieu de StdCall pour les interfaces ?
    Car en C# rien de ne précise la convention d'appel

    Et en Delphi ça dépend si 32 ou 64bits
    En 32, stdcall sera pris en compte, SafeCall ajoute un HRESULT implicite par dessus un stdcall
    En 64, stdcall sera ignoré et remplacé par x64, SafeCall étant une convention OLE, normalement c'est un HRESULT implicite par dessus un x64

    En 64Bits, côté C#, stdcall sera aussi ignoré au profit de ABI x64
    En C# force aussi la cible Platform target forcé en x64 ou x86 puisque tu utilises du code non managé

    Regarde ceci https://brokenevent.com/blog/2020-09-02
    C'est un peu rugueux à utiliser l'interface comme si c'était une table de pointeur de fonction via GetDelegateForFunctionPointer
    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

  3. #3
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    haha, oui c'est pas faux

    intéressant ton lien...comme j'ai répondu à anapurna, je préfèrerais rester sur du PChar pour être compatible C...mais ça semble en effet un peu compliqué à gérer en C#

    je vais peut-être faire des nouvelles exportations spécifiques pour C#...

    Merci
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    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
    Je ferais deux DLL
    Une DLL proche du C
    une DLL COM installé dans le GAC qui fait le Bridge avec la DLL proche du C, juste une DLL passerelle, pas de code métier, juste un proxy

    C'est ce que j'ai fait en D7, j'ai encaspulé une DLL type WinAPI dans une DLL COM
    Tiens, je note que j'avais tout testé en VBS et puisque ce c'était du COM, toutes les fonctions étaient en safecall

    C'est ce que fait le C# qui produit une DLL Assembly et la DLL Interop en plus pour le COM
    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

  5. #5
    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
    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. Utiliser une DLL Delphi sous PHP/Apache
    Par JauneLoke dans le forum Delphi
    Réponses: 10
    Dernier message: 31/03/2020, 13h56
  2. Utiliser une DLL Matlab sous Delphi
    Par airefrais dans le forum Langage
    Réponses: 4
    Dernier message: 24/07/2009, 10h16
  3. DLL Delphi pour utilisation sous C++ Builder
    Par kurul1 dans le forum Langage
    Réponses: 8
    Dernier message: 25/06/2008, 10h54
  4. DLL Delphi utilisée sous VB.NET
    Par slimjoe dans le forum Langage
    Réponses: 2
    Dernier message: 09/01/2006, 00h12
  5. Comment créer une dll Win32 sous Delphi ?
    Par Mickey.jet dans le forum Langage
    Réponses: 8
    Dernier message: 16/06/2005, 15h38

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