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 :

Impossible de prendre l'adresse, d'obtenir la taille ou de déclarer un pointeur vers un type managé


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 64
    Par défaut Impossible de prendre l'adresse, d'obtenir la taille ou de déclarer un pointeur vers un type managé
    Bonjour,
    Pour communiquer avec une dll qui passe des pointeur de pointeur de structure, je dois créer en C# l'équivalent de ces structures:

    les strutures en c:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    typedef struct _PointList
    {
        Point	    *m_pPointList;		// List of point
        uint32		 m_numPoints;	// Number of points
        ...
    } PointList;
     
    typedef struct _Point
    {
        float	m_point[3];		// X, Y, Z components of our point
    } Point;
    Voici ce que j'ai crée en c#:
    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
    [StructLayout(LayoutKind.Sequential)]
        public struct PointList
        {
            public unsafe Point* m_pPointList;
            public UInt32 m_numPoints; 
            ...
        }
    
        [StructLayout(LayoutKind.Sequential)]
        public struct Point
        {
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
            public float[] m_point;
        }
    J'ai autorisé le code unsafe dans mon projet et quand je compile j'ai l'erreur suivante :
    Erreur 1 Impossible de prendre l'adresse, d'obtenir la taille ou de déclarer un pointeur vers un type managé ('Frame_3d.Point')
    Quelqu'un pourrait il m'aider?
    D'avance merci.

  2. #2
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Salut

    J'ai souvent tatonné dans ce domaine a devoir exploiter des dll pur C en C#
    Mais en definitive ca a toujours tres bien marché


    Dans ton cas j'eviterais de declarer la structure Point pour ne pas creer d'ambiguité avec la classe Point de Csharp

    Et au risque de dire une betise j'essayerais quand meme un Array (en tout cas ca compile)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct _PointList
    {
        xPoint	    []m_pPointList;		// List of point
        uint32		 m_numPoints;	// Number of points
        ...
    } PointList;

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 64
    Par défaut
    Merci je vais essayer

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

Discussions similaires

  1. Impossible de prendre un caractére scanf %c
    Par octaria dans le forum Débuter
    Réponses: 10
    Dernier message: 24/05/2009, 17h27
  2. [XP - Explorer] Impossible d'entrer une adresse
    Par mioux dans le forum Windows XP
    Réponses: 4
    Dernier message: 03/03/2008, 11h52
  3. Réponses: 7
    Dernier message: 08/03/2007, 11h23
  4. Impossible de prendre une valeur avec Console.Read( ?
    Par Tux1 dans le forum Windows Forms
    Réponses: 9
    Dernier message: 07/01/2007, 16h29
  5. Accès au net mais impossible de pinger des adresses non IP ?
    Par muad'dib dans le forum Dépannage et Assistance
    Réponses: 5
    Dernier message: 18/09/2006, 11h44

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