DLL sous C++ builder 6

Signaler
Messages postés
17
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
5 août 2003
-
Messages postés
17
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
5 août 2003
-
Bonjour,
Voici une partie du .h de mon exécutable que je dois transformer en DLL (sous C++ builder 6) :
#ifndef MODBUSTCPIP_H
#define MODBUSTCPIP_H

class CModbusTCPIP
{
public :
  CModbusTCPIP(void);
  ~CModbusTCPIP(void);

  bool Ouverture(const char FAR *ad);
  void Fermeture();

  bool ModbusLecturebit(unsigned short num, unsigned short adresse, int nb);
  bool ModbusLecturemot(unsigned short num, unsigned short adresse, int nb);
private :
  void Lecturebit(unsigned short num, unsigned short adresse, int nb, BYTE *trame);
  void Lecturemot(unsigned short num, unsigned short adresse, int nb, BYTE *trame);
  bool InitWinsock2();
  bool CreationSocket();
private :
  int sock;
  const char FAR* adresse;
};
#endif

Je dois donc transformer mon programme en DLL. Si quelqu’un pouvez m’expliquer :
- les étapes à suivre pour réaliser ma DLL sous c++ builder 6
- comment appelle cette dll d’un nouveau projet
Je sais qu’il existe une aide : http://lfe.developpez.com/DLL/ mais je n’ai pas tout compris. J’ai essayé de faire une DLL en suivant ses exemples mais je n’y suis pas arrivée.

Quelqu’un pourrait me dire la différence entre une DLL statique et une DLL dynamique ? Pourquoi faire l’une plutôt que l’autre ? Ma DLL sera composée d’une classe, dois-je faire une DLL statique ou dynamique ?

Merci Isabelle
A voir également:

4 réponses

Messages postés
547
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
7 octobre 2007
1
Cherche dans l'aide de C++ Builder 6, c'est expliqué.

une DLL (Dynamic Link Library) est comme son nom l'indique dynamique. Cela donneras un fichier du type nom_de_fichier.DLL
Les bibliothèque statique sont de la forme nom_de_fichier.LIB
une fois que ta DLL est créée. Tu as deux solutions pour lié ton exécutable à ta DLL.
1 : passer par les fonctions de l'API Windows LoadLibrary et GetProcAddress.

2 : utiliser l'utilitaire IMPLIB sur ta DLL, ce qui te créera un tout petit fichiers nom_de_ta_dll.lib. Fichier que tu liera avec ton executable. Ce fichier .LIB évite d'avoir à utiliser les API windows, mais t'oblige à avoir obligatoirement la dll accessible par ton exe.
Messages postés
17
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
5 août 2003

J'ai déjà regardé et j'ai essayé de créer une DLL (constituée d'une classe) en m'aidant de l'aide C++ builder 6 mais je n'y suis pas arrivée. C'est pour cela que j'ai posté ce message.

Si quelqu'un avait un exemple qui fonctionne de DLL constituée d'une classe, cela m'aiderait bcp.

Merci
Isabelle
Messages postés
547
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
7 octobre 2007
1
dans ton fichier .h

ajoute ceci

#ifdef __DLL__
#define IMPORT_EXPORT __declspec (dllexport)
#else
#define IMPORT_EXPORT __declspec (dllimport)
#endif

IMPORT_EXPORT class CModbusTCPIP
{

... ici le reste de la définition de ta classe

pour utiliser cette dll dans un projet C++ builder, ne pas oublier d'ajouter au projet le fichier .lib générer par IMPLIB a la fin de la compilation de ta DLL
Messages postés
17
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
5 août 2003

Merci bcp. C'est justement ce que je viens de faire sauf que ce n'est pas IMPORT_EXPORT class CModbusTCPIP mais class IMPORT_EXPORT CModbusTCPIP.

A+
Isabelle