Appel d'une méthode managée C++ avec Vb.Net : paramétres non modifié en sortie d

cs_arc59 Messages postés 32 Date d'inscription mardi 15 janvier 2002 Statut Membre Dernière intervention 24 mars 2011 - 7 janv. 2009 à 14:31
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 - 7 janv. 2009 à 18:57
Bonjour à tous,


je fais actuellement la migration d'un programme VB6 / C++ en Vb.net / C++ CLR.


Lorsque j'appelle la fonction C++ à partir d'une forme .Net, le paramètre est correctement passé à la méthode en C++, puis modifié mais, en sortie de fonction, dans le code VB.Net, la valeur de la variable modifiée par la méthode C++ n'a pas changé.


J'aimerai récupérer la valeur modifiée par la méthode C++ dans VB.Net. Je ne comprend pas ce qui cloche dans ce code, j'ai cherché des infos pour pouvoir faire ce passage / récupération de paramètre sur le net mais rien de ce que j'ai trouvé n'a marché.


Merci pour votre aide.




Le code managed C++ :


namespace CommunVideo {


 public ref class clsWCVD601_DllGrapheDirectShow
 {


 public :


void CommunVideo::clsWCVD601_DllGrapheDirectShow::cppWCVD601_ExporterFichiers(System::Int32^ test)
{


 test = 10;


}


 };
}




Le code Vb.net, une forme de base :


Public Class Form1


    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim i As New CommunVideo.clsWCVD601_DllGrapheDirectShow
        Dim iCr As IntPtr = CType(20, IntPtr)
        i.cppWCVD601_ExporterFichiers(iCr)
    End Sub


End Class
A voir également:

1 réponse

cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
7 janv. 2009 à 18:57
Bonjour,
Tu dois passer ta valeur test par référence de cette manière.
void CommunVideo::clsWCVD601_DllGrapheDirectShow::cppWCVD601_ExporterFichiers(System::Int32^% test)
{
 test = 10;
}
0
Rejoignez-nous