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

MFC Discussion :

Problème de char en argument d'une fonction dans une dll


Sujet :

MFC

  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Points : 167
    Points
    167
    Par défaut Problème de char en argument d'une fonction dans une dll
    Bonjour,

    J'ai créé une dll en c++/MFC que j'importe dans un projet vb.net. Dedans ce trouve une fonction qui nécessite un char en argument. Malheureusment, quand je l'appelle depuis vb, elle ne reçoit que le premier caractère de cette chaine.
    Je suppose donc que le problème vient d'une différence de type entre vb et C++, j'ai aussi essayé avec tout des string, mais c'est pire.
    Donc, ou est l'erreur? Quel type de variable est-il préférable d'utiliser?...

    voici le début de mon code MFC
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void fChangeChaine(char Chaine)
    {
     
    	std::ofstream MedIRdbg("MedIRdbg.txt"); 
    	MedIRdbg << " ***BEGIN*** ";
    	wchar_t adr = 16;
    	wchar_t cmd = 12;
    	int iProtocol;
               std::string sChaine = std::string(&Chaine);
    ...
    }
    La manière dont je l'appelle en vb
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        <Runtime.InteropServices.DllImport("COMProt.dll", _
              CharSet:=CharSet.Auto)> Public Shared Function _
              fChangeChaine(ByVal cChaine As Char) As Integer
       End Function
    J'obtiens la même chose en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        Private Declare Function fChangeChaine Lib "COMProt.dll" _
              (ByVal cChaine As Char) As Integer
    Et je fais appelle à la fonction comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        Private Sub BLaUne_Click(ByVal sender As System.Object, _
              ByVal e As System.EventArgs) Handles BLaUne.Click
            Dim chaine As Char = "LaUne"
            fChangeChaine(chaine)
        End Sub
    Mais ma dll ne reçoit que "L"
    D'avance merci

  2. #2
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 110
    Points : 167
    Points
    167
    Par défaut
    Je viens d'essayer, par curiosité, avec de Integer, là ça passe. Mais bien sur, ce n'est pas du texte!

    J'en profite pour préciser, je suis en compact Framework 2.0

Discussions similaires

  1. Appel d'une fonction dans une fonction d'une même classe
    Par script73 dans le forum Général Python
    Réponses: 3
    Dernier message: 06/03/2015, 10h18
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Réponses: 3
    Dernier message: 01/05/2007, 16h07
  5. Réponses: 4
    Dernier message: 17/03/2004, 17h24

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