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 :

Retourner un vector dans une méthode managée et la propager dans une dll


Sujet :

C++/CLI

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 88
    Points : 81
    Points
    81
    Par défaut Retourner un vector dans une méthode managée et la propager dans une dll
    Bonjour, et désolé pour ce titre très (trop) long.

    J'ai un problème très étrange.
    Dans une dll, j'ai défini une ref class, avec une méthode publique qui retourne un vector<int>.
    Ca compile sans aucun soucis.

    Ensuite j'utilise cette classe dans un autre projet, en utilisant la dll générée. Je peux instancier ma classe, mais je ne peux pas appeler la méthode en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error C3767: 'ManagedGuesser::Guess': candidate function(s) not accessible.
    Après recherches sur MSDN, ce problème peut être lié au fait que les types natifs sont déclarés en private par défaut, et ne sont pas visible en dehors de la dll. Le truc ici c'est que vector<int> c'est pas vraiment moi qui ait déclaré ce type...

    J'ai essayé de renvoyer un pointeur sur le vector, de mettre un autre type dans le < >, une référence, ... ca marche pas.

    Par contre, si je renvoie directement un int dans la méthode, je n'ai pas de problèmes.

    Auriez-vous une idée?

    Merci beaucoup

  2. #2
    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
    quel type de projet essaie d'acceder à cette dll ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 88
    Points : 81
    Points
    81
    Par défaut
    C'est un autre projet C++ managé.

    Donc en gros les deux projets sont en C++/CLI.

    Bonne journée

  4. #4
    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
    la classe C++/CLI ne peut pas exposer des membres natifs.
    Mais pourquoi utiliser des vector ? Le fx.net dispose de conteneurs très puissants (List<>, etc ...)

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 88
    Points : 81
    Points
    81
    Par défaut
    En fait c'est pour des raisons de compatibilité un peu obscures : j'utilise des lib C++ natives, qui ne savent utiliser que des vectors, et je ne veux pas marshaller en vectors des List

    Je vais me débrouiller autrement.

    En tous cas merci pour ta réponse !

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/03/2010, 10h24
  2. Réponses: 3
    Dernier message: 20/04/2009, 09h13
  3. Réponses: 2
    Dernier message: 26/06/2008, 21h20
  4. Comment appeler une méthode dont le nom est dans un string?
    Par Ireon dans le forum API standards et tierces
    Réponses: 22
    Dernier message: 13/04/2007, 17h22
  5. Réponses: 3
    Dernier message: 05/10/2006, 18h52

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