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

 Delphi Discussion :

Lier un module C à Delphi 2007


Sujet :

Delphi

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Points : 123
    Points
    123
    Par défaut Lier un module C à Delphi 2007
    Bonjour à tous

    Si je veux écrire une fonction en C, et la lier à un projet Delphi : sous D-2007, je suppose qu'il me faudrait passer par Bulder pour écrire la fonction C, et rajouter l'OBJ via l'EDI de D-2007 ?

    Merci

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 871
    Points : 11 362
    Points
    11 362
    Billets dans le blog
    6
    Par défaut
    Tu peux aussi la traduire en Pascal, ou l'exporter dans une dll.

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 540
    Points : 123
    Points
    123
    Par défaut
    OK. Merci Mais la solution de l'OBJ reste techniquement possible ?

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 560
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 560
    Points : 25 156
    Points
    25 156
    Par défaut
    Ni OBJ ni LIB
    Delphi est capable de compiler en format DCU et en format OBJ, mais C++ ne le sait pas !

    avec C++Builder, tu peux tenter de faire un BPL qui est en fait une DLL mappée sauce Borland

    Sinon, une DLL tout simple avec des fonctions (noms non décorées) exportées et accessible via LoadLibrary\GetProcAddress

    Est-ce que ta fonction ne pourrait pas s'écrire en Delphi ?

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Ni OBJ ni LIB
    Delphi est capable de compiler en format DCU et en format OBJ, mais C++ ne le sait pas !

    avec C++Builder, tu peux tenter de faire un BPL qui est en fait une DLL mappée sauce Borland

    Sinon, une DLL tout simple avec des fonctions (noms non décorées) exportées et accessible via LoadLibrary\GetProcAddress

    Est-ce que ta fonction ne pourrait pas s'écrire en Delphi ?
    si tu peux lier un .OBJ avec {$L fichier.obj} et déclarer ses fonctions "external", c'est ce qui a été fait pour les jpeg et la zlib par exemple.

    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
    22
     
    {$IFDEF MSWINDOWS}
      {$L deflate.obj}
      {$L inflate.obj}
      {$L infback.obj}
      {$L inffast.obj}
      {$L inftrees.obj}
      {$L trees.obj}
      {$L compress.obj}
      {$L uncompr.obj}
      {$L adler32.obj}
      {$L crc32.obj}
      {$L zutil.obj}
     
      {$L gzclose.obj}
      {$L gzread.obj}
      {$L gzwrite.obj}
      {$L gzlib.obj}
    {$ENDIF}
     
    function zlibVersion: PAnsiChar; cdecl; external;
    ...

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 560
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 560
    Points : 25 156
    Points
    25 156
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    si tu peux lier un .OBJ avec {$L fichier.obj
    En 2011, j'avais essayé d'extraire un OBJ d'un LIB en MSVC++ avec TLIB et de l'intégrer avec Borland mais il n'a jamais réussi à me trouver les fonctions

    ça fonctionne avec zlib, peut-être une différence entre un OBJ de C et de C++ !

    N'ayant pas réussi, si ça fonctionne bvsud entre C++Builder et Delphi, ton expérience m'intéresse

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    En 2011, j'avais essayé d'extraire un OBJ d'un LIB en MSVC++ avec TLIB et de l'intégrer avec Borland mais il n'a jamais réussi à me trouver les fonctions

    ça fonctionne avec zlib, peut-être une différence entre un OBJ de C et de C++ !

    N'ayant pas réussi, si ça fonctionne bvsud entre C++Builder et Delphi, ton expérience m'intéresse
    alors, attention, tu peux importer des fonctions C, pas des objets C++ d'ailleurs Delphi ne peut déclarer que des fonctions externes, pas de variables ou quoi que ce soit d'autre (mais on peu ruser, cf le lien ci-dessous)

    avant XE2 Delphi ne supportait que les fichiers objets au format OMF, depuis XE2 on peut lier des fichiers objet COFF.

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 560
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 560
    Points : 25 156
    Points
    25 156
    Par défaut
    Ah, je ne savais pas cette nouveauté, en BCB2007, j'avais regardé Coff2Omf sans grand succès pour récupérer un LIB correct (une version MSVC++ fournie avec la DLL)
    J'avais quelques fonctions décorées avec des caractères ? que ne supportait pas BCB2007, et j'ai tenté une bidouille via IMPDEF\IMPLIB + Edition du LIB, cela fonctionnait mais quelle horreur ces noms décorées MS qui ne sont pas standards !

    Finalement, j'ai récupéré mon LIB avec IMPLIB et les fonctions dont j'ai besoin de ne pose pas de problème pour la version "officielle" de ce Kit

Discussions similaires

  1. Delphi 2007 disponible
    Par PierreDelcroix dans le forum Delphi
    Réponses: 22
    Dernier message: 27/03/2007, 18h32
  2. Comment lier un module (fichier .o) sous Kdevelop ?
    Par jejerome dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 17/04/2006, 23h38

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