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
La manière dont je l'appelle en vb
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); ... }
J'obtiens la même chose en faisant
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
Et je fais appelle à la fonction comme ceci
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
Mais ma dll ne reçoit que "L"
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
D'avance merci
Partager