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 :

Conversion de void* de C++ a C# [Débutant]


Sujet :

C#

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 145
    Par défaut Conversion de void* de C++ a C#
    Bonjour.
    Je suis en train de traduire des fonctions du C++ au C#. Comment faire pour convertir un void*?
    Grosso modo, j'ai une fonction qui peut prendre plusieurs types de données différentes. J'ai pensé à utiliser la classe Object et faire des cast mais là où ça se complique c'est qu'elle peut aussi recevoir des structs... Du coup comment faire?

  2. #2
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Par défaut
    Bonjour,

    Tu peux pas le faire via un var ?
    Ou simplement une string si je me trompe sur la fonction de var ?
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  3. #3
    Membre éprouvé
    Avatar de Crooby
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 65
    Par défaut
    regarde du côté des delegate peut-être que cela peut aider.
    http://msdn.microsoft.com/fr-fr/libr...=vs.95%29.aspx

  4. #4
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Bonsoir.

    Si tu veux importer une fonction C, tout dépend de ce que représente ce pointeur void*. En général, on utilisera un IntPtr. Mais s'il s'agit d'un tableau, d'un handle Win32 ou d'une chaîne de caractères, on utilisera autre chose.

    Si tu veux retranscrire une fonction C/C++, il faudra soit utiliser un Object (le struct sera alors boxé), soit une interface commune à tous les types acceptables (bien plus propre), soit enfin avoir recours à une méthode générique. Ou bien simplement faut-il repenser autrement cette partie du code pour produire quelque chose de plus propre et plus adapté.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 145
    Par défaut
    Citation Envoyé par DonQuiche Voir le message
    Bonsoir.

    Si tu veux importer une fonction C, tout dépend de ce que représente ce pointeur void*. En général, on utilisera un IntPtr. Mais s'il s'agit d'un tableau, d'un handle Win32 ou d'une chaîne de caractères, on utilisera autre chose.

    Si tu veux retranscrire une fonction C/C++, il faudra soit utiliser un Object (le struct sera alors boxé), soit une interface commune à tous les types acceptables (bien plus propre), soit enfin avoir recours à une méthode générique. Ou bien simplement faut-il repenser autrement cette partie du code pour produire quelque chose de plus propre et plus adapté.
    Dans mon cas, le void* peut representer une structure ou un objet. J'ai essayé avec Object mais quand je passe une structure à la fonction ça me dit:
    Argument error: cannot convert from 'ref FinLib.Option.TCalcPVParams' to 'ref object'

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 145
    Par défaut
    C'est bon, finalement j'ai changé mes structs en classe et j'utilise Object ... merci quand même..

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/07/2014, 12h02
  2. [MFC] conversion void * en variant
    Par dfiad77pro dans le forum Windows
    Réponses: 15
    Dernier message: 06/04/2009, 11h09
  3. conversion de void* à char*[]
    Par charlix dans le forum C
    Réponses: 6
    Dernier message: 13/03/2008, 15h15
  4. Conversion void* et double
    Par EnigmuS dans le forum C
    Réponses: 23
    Dernier message: 24/04/2007, 11h13
  5. Réponses: 2
    Dernier message: 24/12/2005, 11h37

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