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
-------------------------------
Réponse au message :
-------------------------------
> 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
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > 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
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > 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.
> > >
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > 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
> > >
> >
>