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 :

Wrapper de C++Builder vers C++ [Débutant]


Sujet :

C++Builder

  1. #1
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : août 2005
    Messages : 5 183
    Points : 8 870
    Points
    8 870
    Par défaut Wrapper de C++Builder vers C++
    Bonjour,

    j'ai actuellement un fichier .lib (dont je ne possède pas les sources, juste les .hpp), et je souhaite wrapper cette lib de manière à pouvoir l'utiliser dans du C++ standard.

    Est-ce que cela est-il possible? Comment?

    En réalité j'arrive aisément à écrire un projet C++Builder qui l'utilise, mais aucun projet C++


    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  2. #2
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : novembre 2005
    Messages : 7 152
    Points : 22 092
    Points
    22 092
    Par défaut
    Salut,
    le problème de Borland est qu'il fait des lib de type OMF alors que les autres compilateurs utilisent des lib de type COFF.

    Dans les bin de borland il y a un utilitaire qui permet de passer une lib de type COFF en type OMF, mais je n'ai pas vu pour faire l'inverse.

    En tout cas il faut chercher de ce coté la je pense
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  3. #3
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : août 2005
    Messages : 5 183
    Points : 8 870
    Points
    8 870
    Par défaut
    J'ai réussi à faire un project C++Builder de type VC++, cette DLL contient une fonction "Encode" que je vois bien dans le dump.
    J'ai lancé un dumpbin.exe de cette DLL et voici le résultat:

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    dumpbin.exe /exports mydll.dll
    Microsoft (R) COFF/PE Dumper Version 9.00.30729.01
    Copyright (C) Microsoft Corporation.  All rights reserved.
     
     
    Dump of file mydll.dll
     
    File Type: DLL
     
      Section contains the following exports for mydll.dll
     
        00000000 characteristics
               0 time date stamp Thu Jan 01 01:00:00 1970
            0.00 version
               1 ordinal base
               3 number of functions
               3 number of names
     
        ordinal hint RVA      name
     
              2    0 00001258 @Encode$qpxct1
              3    1 00002104 @std@nothrow
              1    2 000020F8 ___CPPdebugHook
     
      Summary
     
            1000 .data
            1000 .edata
            1000 .idata
            1000 .reloc
            2000 .rsrc
            1000 .text
            1000 .tls
    Je pense donc que c'est bon, ma question est maintenant, comment puis-je inclure / utiliser cette DLL dans mon code C++ (standard) ?
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  4. #4
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    mars 2002
    Messages
    978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : mars 2002
    Messages : 978
    Points : 2 054
    Points
    2 054
    Par défaut
    Hello

    tout simplement en utilisant les fonctions standards de l'API win32
    LoadLibrary Charger la DLL
    GetProcAddress Charger une fonction de la DLL
    FreeLibrary Decharger la DLL


    Il me semble qu’il existe un TUTO de LFE sur ce sujet
    http://lfe.developpez.com/DLL/

    il faut également également prendre garde au convention d'appel
    __fastcall chez Borland et __stdcall chez MS
    Cordialement
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  5. #5
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : août 2005
    Messages : 5 183
    Points : 8 870
    Points
    8 870
    Par défaut
    Bonjour,

    il me reste un souci d'inclusion des packages.

    Je m'explique, dans l'IDE Borland, j'ai créé une DLL "VC-Style", dans laquelle je wrappe ma librairie C++Builder, ce qui fonctionne parfaitement.

    Par contre, lorsque j'utilise cette DLL dans VC++, il me dit qu'il manque le package rtl100, vcl100, etc.

    J'ai donc désactivé la RTL dynamique dans les options de compilations mais dans l'onglet Package, j'ai aussi cliqué sur : "Construire avec les packages d'execution" en ajoutant les bpl qui allaient bien.

    Mais malgré ça, l'erreur persiste dans VC++, il me dit que les packages sont manquants...

    Comment y remédier?

    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  6. #6
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    mars 2002
    Messages
    978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : mars 2002
    Messages : 978
    Points : 2 054
    Points
    2 054
    Par défaut
    Salut
    il ne faut pas confondre VC-Style avec une DLL utilisable sans autre dans Visual C++.
    Tu dois construire ta dll sans utiliser les Packages BPL qui ne seront pas utilisables sous VC++.
    malgré tout tu risque d'avoir un problème si la fonction contenue dans ta librarie fait appel à des fonctionalités spécifiques à C++ Builder
    le mieux serait d'extraire le fichier .obj de ta lib avec l'utilitaire TLib , puis d'analyser et ou de décompiler le fichier obtenu.
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

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

Discussions similaires

  1. C#Builder vers Visual C#
    Par MICLANG dans le forum C#
    Réponses: 2
    Dernier message: 03/05/2008, 00h18
  2. Passage du C++ Builder vers le C#.net
    Par Masmeta dans le forum Framework .NET
    Réponses: 4
    Dernier message: 18/10/2007, 17h50
  3. Equivalent a tchart sous visual C++, portage C++ builder vers Visual C++
    Par valhol dans le forum Choisir un environnement de développement
    Réponses: 1
    Dernier message: 06/07/2007, 23h37
  4. Réponses: 1
    Dernier message: 11/05/2007, 19h18
  5. [debutant] de motion builder vers environnement 3D
    Par comme de bien entendu dans le forum OpenGL
    Réponses: 2
    Dernier message: 10/04/2006, 02h49

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