Partage de memoire entre un Dll C++ et VB.Net

ericetrac Messages postés 1 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 27 juillet 2007 - 27 juil. 2007 à 12:52
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 - 27 juil. 2007 à 19:00
La question est toute simple, et est lier a mes faible connesance en C
Je voudrais juste ecrir une Dll en C++ , qui contien une classe, et en VB.Net cree un objest de cette classe et echangé des variables ...

tout compile et samble fonctioner, mais les données ne sont pas partagée

Code de la DLL C++
MyClass.h
using namespace System;
namespace MyClass_Dll {
    public ref class ClassTest
    {
    public:    
        IntPtr AdressTxt;
        void defineValue();
    };
}

MyClass.cpp
#include "stdafx.h"
#include "windows.h"

char *a;

namespace MyClass_Dll {
    void ClassTest::defineValue()
    {
        a=(char *) malloc(10);
        strcpy(a,"Hello");
        AdressTxt=(IntPtr)a;
    }
}

En VB.Net
deriere un bouton je fait

        ' initialisation d'une instance de classe
        Dim brol As New MyClass_Dll.ClassTest
        'appel d'une fonction dans la classe
        brol.defineValue
       ' recuperation d'une zone memoire
        Dim bytes(12) As Char
        Marshal.Copy(MrSID.g_AdressBmpSection, bytes, 0, 10)

j'ai essayer plusieur chose, mai rien n'y fait, je ne retouve jamais mon "Hello" ecrit dans la Dll C

1 réponse

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
27 juil. 2007 à 19:00
Connais rien au VB.NET mais comment est-ce que tu récupères la chaîne de la DLL? Je vois pas de AdressText dans ton code VB.

[au fait tu libères pas 'a' avant d'allouer de la mémoire alors attention aux fuites si tu appelles plusieurs fois DefineValue]
0
Rejoignez-nous