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 réaliser une DLL indépendante


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 60
    Par défaut Comment réaliser une DLL indépendante
    Bonjour à tous,

    Quelqu'un sait il comment rendre une DLL créee sous BCB 6 indépendante (execution sans BCB) ? J'ai en effet fait le nécessaire au niveau du programme principal à savoir désactiver la RTL, pas de paquets... mais lorsque j'essaie de compiler ma DLL avec ces mêmes options, ça ne passe pas !!!

    Si la DLL est compilée "dépendante" avec un programme compilé "indépendant" alors l'exécution sans BCB fonctionne jusqu'à que la DLL soit appelée et là terminé.

    Merci pour votre aide

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut
    Il faut modifier les options de compilation (menu "Projet --> Options"):
    1) décocher l'option "Build with runtime packages" dans la section "Packages" (désolé, j'utilise la version anglaise, je te laisse chercher la bonne traduction)
    2) décocher l'option "Dynamic RTL" dans la section "Linker". Je ne suis pas sûr que cette étape soit nécessaire.

    Dis-moi si ça marche.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 60
    Par défaut
    Bonjour,

    Justement cette procédure ne marche pas car j'ai pas mal d'erreur sur le lieur... qui sont relatives à l'utilisation d'AnsiString... En effet, ma fonction DLL utilise des paramètres de type tableau d'AnsiString (qui sont modifiés par la fonction puis renvoyés).
    C'est peut-être le type AnsiString qui n'est finalement pas reconnu... Est-ce que cela marcherait dans votre cas, ce type de manip ??

    merci d'avance

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 190
    Par défaut
    Bonjour,

    Quand tu créés un nouveau projet dll dans Builder, tu dois avoir ce message en commentaire dans l'unité créé:

    //---------------------------------------------------------------------------
    // Important note about DLL memory management when your DLL uses the
    // static version of the RunTime Library:
    //
    // If your DLL exports any functions that pass String objects (or structs/
    // classes containing nested Strings) as parameter or function results,
    // you will need to add the library MEMMGR.LIB to both the DLL project and
    // any other projects that use the DLL. You will also need to use MEMMGR.LIB
    // if any other projects which use the DLL will be performing new or delete
    // operations on any non-TObject-derived classes which are exported from the
    // DLL. Adding MEMMGR.LIB to your project will change the DLL and its calling
    // EXE's to use the BORLNDMM.DLL as their memory manager. In these cases,
    // the file BORLNDMM.DLL should be deployed along with your DLL.
    //
    // To avoid using BORLNDMM.DLL, pass string information using "char *" or
    // ShortString parameters.
    //
    // If your DLL uses the dynamic version of the RTL, you do not need to
    // explicitly add MEMMGR.LIB as this will be done implicitly for you
    //---------------------------------------------------------------------------
    Ajoute donc la librarie MEMMGR.LIB à ta dll, et à tous les projets qui utilisent cette dll.
    Par contre tu devras fournir la dll BORLNDMM.DLL avec ton application.

    Ou bien, l'autre solution est de remplacer tes AnsiStings qui sont en paramètres de tes fonctions exportées, en char *.

    Cordialement,

    Benjamin

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 23/01/2008, 09h17
  2. Comment exécuter une DLL ?
    Par chleuh dans le forum Langage
    Réponses: 4
    Dernier message: 29/06/2005, 14h27
  3. Comment créer une dll Win32 sous Delphi ?
    Par Mickey.jet dans le forum Langage
    Réponses: 8
    Dernier message: 16/06/2005, 15h38
  4. [FLASH MX] Comment réaliser une forme dentelée
    Par celina5880 dans le forum Flash
    Réponses: 4
    Dernier message: 04/11/2004, 17h48

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