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

Utilisation d'une class cpp dans une DLL


Sujet :

C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Utilisation d'une class cpp dans une DLL
    [Suite à cette discussion]
    Bonjour,

    Avant de vous envoyer ce message j'ai suivi les indications, mais malheureusement cela ne fonctionne pas pour tout le monde. Je pense qu'il doit s'agir d'une erreur de saisie. Mais à force de lire et relire, on ne voit plus rien.

    Voici le code:

    header: my_lib.h
    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
     
    #ifdef MY_LIB_DEF // inside DLL
    #define MY_LIB   __declspec(dllexport)
    #else
    #define MY_LIB   __declspec(dllimport)
    #endif
     
    class MY_Class {
    	private:
    		char* filename;
    		int fd;
    	public:
    		    MY_Class();
    		~MY_Class();
    		int openMYfile(char* fname, int mode); 
    		int closeMYfile();
    };
     
    extern "C" MY_LIB MY_Class* new_MYCLASS();
    Voici le code de la dll my_lib.cpp
    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
     
    #define MY_LIB_DEF
    #include "my_lib.h"
     
     
    /* CONSTRUCTEUR */
    MY_Class::MY_Class(){
     . . .
    }
     
    /* DESTRUCTEUR */
    MY_Class::~MY_Class() {
     . . .
    }
     
     
    int MY_Class::openMYfile (char* fname, int mode) {
    	return 0;
    }
     
     
    int MY_Class::closeMYfile () {
    	return 0;
    }
     
    /* FOR USAGE VIA DLL */
    MY_Class* new_MYCLASS() {
       return new MY_Class();
    }
    et enfin le code du prog principal (test.cpp)
    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
     
    #include "MY_lib.h"
     
     
    int main(int argc, char* argv[]) {
    	//LoadLibrary("MY_lib.dll" );  // ne fonctionne ni sans ni avec le ligne
     
    	printf("INITIALISATIONS ... ");
     
    	MY_Class* TheObject = ::new_MYCLASS();
    	printf("    OK\n");
     
    	TheObject->openMYfile("C:/Dev/cpp/test.txt", 0);
     
    	TheObject->closeMYfile();
     
    	return 0;
    }

    Lors de la compilation (avec mingw32), les erreurs suivantes sont retournées:
    C:\Dev\cpp\mingw32-make.exe -f makefile
    g++ -c MY_lib.cpp -o MY_lib.o
    g++ -shared -o MY_lib.dll MY_lib.o
    g++ -o test.exe test.cpp
    C:\Users\...\Temp/cc1oVLPB.o:test.cpp: (.text+0x37): undefined reference to `_imp__new_MYCLASS'
    C:\Users\...\Temp/cc1oVLPB.o:test.cpp: (.text+0x76): undefined reference to `MY_Class::openMYfile(char*, int)'
    C:\Users\...\Temp/cc1oVLPB.o:test.cpp: (.text+0xb0): undefined reference to `MY_Class::closeMYfile()'
    collect2: ld returned 1 exit status
    mingw32-make.exe: *** [TEST] Error 1
    Je suis sec. Merci pour votre aide...

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Essaye en déclarant la comme comme ça :


Discussions similaires

  1. Utilisation d'une classe C++ dans une classe C#
    Par Masmeta dans le forum C++/CLI
    Réponses: 1
    Dernier message: 01/07/2015, 21h59
  2. Réponses: 7
    Dernier message: 05/04/2011, 17h19
  3. Réponses: 21
    Dernier message: 14/01/2010, 12h50
  4. Réponses: 15
    Dernier message: 28/04/2009, 07h26
  5. Réponses: 6
    Dernier message: 30/03/2009, 18h13

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