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++Builder Discussion :

Comment intégrer un Delphi DLL dans CBuilder


Sujet :

C++Builder

  1. #1
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut Comment intégrer un Delphi DLL dans CBuilder
    Excusez moi, je pense que cela est un vieux sujet. Comme je n'ai pas pu trouver la solution, je le pose ici pour avoir des aides.
    J'ai un DLL conçu pour Delphi5 et je voudrais l'intégrer dans mon appli sous CBuilder 6. Comme il n'y a pas de fichier *.lib, je ne sais pas du tout comment le faire.
    Merci d'avance

  2. #2
    Membre du Club

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 21
    Points : 50
    Points
    50
    Par défaut dll Delphi -> C++Builder
    Il faut utiliser implib.exe, présent en principe dans le répertoire "...CBuilderN\bin", de la façon suivante :

    implib MyFile.lib MyFile.dll

    Le .lib est créé à partir de la dll.

    Il reste évidemment à déclarer les prototypes des fonctions dans le cpp...
    Tabz

  3. #3
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    Merci, j'ai obtenu un .lib ajouté dans mon projet CB.
    Mais, lors de link, le programme ne peut pas trouver la fonction:

    La fonction initiale importée sous Delphi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function InstRockey(hOwnerWnd:HWND;plValue:PLongInt;pStrValue:LPSTR):LongInt;stdcall;external 'InstDll.Dll';
    // Appel sous Delphi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var
        retCode :LongInt;
    begin
         retCode := InstRockey(self.handle,nil,'/i');
    end;


    Sous CB, j'ai fait comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Déclaration CB
    //extern "C" __declspec(dllimport) long int InstRockey( HWND hOwnerWnd, long*, char* );
     
    // Appel CB
      int retCode;
      long iii;
      retCode = InstRockey( NULL, &iii, "/i");
    // Erreur: unresolved externe _InstRockey(*****.

  4. #4
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    J'ai eu une réponse: sans passer *.lib. Je ne sais pas pourquoi, mais l'essentiel est que cela marche.

    // Je mets ici pour ce qui s'intéresse

    // Dans CBuilder:

    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
    23
          HINSTANCE handle;
            FARPROC   lpFarProc;
            int (*lpInstRockey)(long,long,char *);
            int retCode;
            char tbuf[80];
     
            handle = LoadLibrary("InstDll.dll");
            if (handle != NULL)
            {
                    sprintf(tbuf,"load dll successfully!");
                    Memo1->Lines->Add(tbuf);
                    lpFarProc = GetProcAddress(handle,"InstRockey");
     
                    if (lpFarProc != NULL)
                    {
                            sprintf(tbuf,"load function successfully!");
                            Memo1->Lines->Add(tbuf);
                            lpInstRockey=(int(cdecl *)(long,long,char *))lpFarProc;
     
                            Memo1->Lines->Add("Déinstal......");
                            retCode=lpInstRockey(NULL, NULL, "/r");  
                    }
             }
    Balises [Code] rajoutées par Ricky81
    Merci d'y penser à l'avenir

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/06/2006, 11h42
  2. comment intégrer une page html dans swf?
    Par jeanman dans le forum Intégration
    Réponses: 3
    Dernier message: 10/05/2006, 20h36
  3. Réponses: 2
    Dernier message: 31/03/2006, 17h48
  4. Réponses: 11
    Dernier message: 13/03/2006, 18h51
  5. Réponses: 5
    Dernier message: 16/07/2005, 01h01

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