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 :

Passage List en référence pour wrapper


Sujet :

C#

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 12
    Points : 4
    Points
    4
    Par défaut Passage List en référence pour wrapper
    bonjour à tous,

    J'ai réalisé en projet en C# utilisant une librairie C/C++. J'ai donc fait un wrapper en C++/CLI. Le tout sous Visual .net

    L'ensemble marche bien jusqu'au moment où j'ai voulu une méthode prennant une List en référence.

    Voici grossièrement à quoi ressemble le code

    C++/CLI
    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
     
    void FillList(List<Point>% listPoint)
    {
    	std::list<CvPoint> listCvPoint;
     
    	// Appel de la méthode de l'instance m_object (en C++)
    	m_objectCpp->FillList(listCvPoint);
     
    	// Copie de la liste
    	std::list<CvPoint>::iterator iter;
    	for (iter = listCvPoint.begin(); iter != listCvPoint.end(); iter++)
    	{
    		CvPoint point = *iter;
    		listPoint.Add(Point(point.x, point.y));
    	}
    };
    jusque là, ca compile

    mais en appelant cette fonction en C#

    C#
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    List<Point> listPoint = new List<Point>();
    m_objectCppCLI.FillList(ref listPoint);
    et la, c'est le drame, ca compile pas :
    erreur CS1501: Aucune surcharge pour la méthode 'FillList' ne prend d'arguments '1'

    voilà mon problème et je vous serais reconnaissant de tout aide

    merci par avance ^^

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 141
    Points : 110
    Points
    110
    Par défaut
    Tu as vérifier que la fonction ne génère pas d'erreur si tu l'appele depuis ton programme C++?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    j'ai un test unitaire en C++ qui me garantie que mon code fonctionne bien.

    Le wrapper en C++/CLI compile mais pas mon code C#.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 141
    Points : 110
    Points
    110
    Par défaut
    J'ai compris,
    List<int> en c# est différents de List<int> en C++ non managé!
    Donc les type sont différents du coup tu as une erreur sur le type du paramètre.
    Si tu veut faire une liste, j'ai bien peur qu'il te faille faire une méthode c++ du type void AddInt(int[] list) et que depuis ton code c# tu appèle cette méthode maclasseCPP.AddInt(list.ToArray())

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 141
    Points : 110
    Points
    110
    Par défaut
    Désoler,

    Je viens de m'apercevoir que c'est du c++ managé. Donc ma théorie s'écroule.
    Enfin tu peux toujours tester pour voir si ça marche en passant par un tableau.
    Enfin j'ai peut-être pas complètement faux, le C++/CLI étant une extension du C++ non managé, il serait utile de vérifier que tu utilise la classe List du framework et non celle de la library standart du c++

Discussions similaires

  1. VB6 problème avec la liste des références disponibles pour votre projet
    Par HectorPriamide dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 18/03/2014, 19h16
  2. Réponses: 2
    Dernier message: 20/09/2006, 14h38
  3. Creer une nouvelle référence pour le driver ODBC
    Par tripper.dim dans le forum Connexion aux bases de données
    Réponses: 3
    Dernier message: 04/01/2005, 22h57
  4. Librairies référence pour produits (UPC / ISBN etc..)
    Par zatomik dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 15/09/2004, 10h38
  5. Référence pour un algorithme
    Par SteveWin dans le forum Langage
    Réponses: 10
    Dernier message: 12/08/2004, 17h47

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