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

Signaler
Messages postés
1
Date d'inscription
vendredi 27 juillet 2007
Statut
Membre
Dernière intervention
27 juillet 2007
-
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
-
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

Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
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]