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

Paumé dans la création et l'utilisation de DLLs [Fait]


Sujet :

C++/CLI

  1. #21
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par nico-pyright(c) Voir le message
    a mon avis, le problème vient de la
    il faut que tu arrives à bien exporter les méthodes et les classes et à bien lier le .lib au projet
    Oui, c'est pourquoi je demande de l'aide. Malgré mes nombreux essais avec/sans declspec(dllexport/import), link avec les lib, les dll, clauses using, clauses __clrcall ou __stdcall, et ainsi de suite, je retombe sur les mêmes erreurs de link, certains méthodes n'étant pas trouvées.
    Dans le projet minimal, c'est ce qu'on observe avec destroySingletons : cette méthode reste introuvable pour le linker, malgré tous mes essais.

  2. #22
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    ok ... alors

    dans le projet core :
    Code EXSingletonManager.h : 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
    #pragma once
     
    #ifndef __EXSINGLETON_H__
    #define __EXSINGLETON_H__
     
    #include <vector>
     
    extern "C"
    {
     
    class __declspec(dllexport) EXSingletonManager
    {
      public:
        EXSingletonManager(void) {}
        EXSingletonManager(const EXSingletonManager&) {}
        EXSingletonManager& operator=(const EXSingletonManager&) {return *this;}
        virtual ~EXSingletonManager() {this->destroySingletons();}
      public:
        void __stdcall destroySingletons(void);
      private:
        std::vector<int*> data;
    };
    //end class EXSingletonManager
    }
    #endif

    projet client
    Code mycontrolcontrol.cpp : 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
    // MyControl.cpp*: fichier projet principal.
     
    #include "stdafx.h"
    #include "MyControlControl.h"
    #include <iostream>
    #include <vector>
     
    using namespace std;
     
    extern "C"
    {
     
    class EXSingletonManager
    {
      public:
        EXSingletonManager(void) {}
        EXSingletonManager(const EXSingletonManager&) {}
        EXSingletonManager& operator=(const EXSingletonManager&) {return *this;}
        virtual ~EXSingletonManager() {this->destroySingletons();}
      public:
        void __stdcall destroySingletons(void);
      private:
        std::vector<int*> data;
    };
    }
     
    #pragma comment (lib, "Core.lib")
     
    void f(void)
    {
      EXSingletonManager s;
    }

    devrait passer la compil

  3. #23
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    Victoire !
    En réalité, ta dernière réponse n'a pas apporté grand chose de neuf par rapport à ce que j'avais essayé; mais en revanche, j'ai réalisé que j'avais fait une erreur auparavant.
    En effet, tu m'avais déjà dit de passer les conventions d'appel en "__stdcall". Ce que j'avais fait, mais pour gagner du temps, j'avais juste modifié le flag de compilation (côté génération de DLL) permettant de passer en __stdcall *par défaut*. L'erreur, c'est que du coup, côté projet, les headers importés ne contenaient pas cette clause __stdcall.

    C'est maintenant résolu.
    Merci beaucoup !

    +
    Chacha

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Création et utilisation de DLL dans mIRC
    Par ram-0000 dans le forum Réseaux
    Réponses: 0
    Dernier message: 03/04/2013, 14h13
  2. Création et utilisation de dlls dans un programme
    Par Crabe05 dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 02/01/2009, 07h25
  3. [C#] Comment utiliser des dll win 32 dans un projet .NET
    Par Mickey.jet dans le forum Delphi .NET
    Réponses: 2
    Dernier message: 31/05/2005, 13h45
  4. [Eclipse 3.0] [Tomcat] problème dans la création du .war
    Par lipao17 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/03/2005, 13h45

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