Bonjour tout le monde !

Je vais essayer de faire simple, j'ai un programme écrit en C# qui envoie des variables en références à une DLL en C.
Pour des variables simples comme des int, char, short, j'arrive à les récupérer après traitement dans mon programme principal, le problème commence lorsque j'utilise un string...

Un extrait de mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
extern "C" __declspec(dllexport) void Receive ( long * ID, long *time, short * len,  string * Raw_Buff)
{
//Pas de problèmes pour ça :
       *ID=hCanEvent.dwIdent;
       *len=hCanEvent.wDataLen;
       *time=hCanEvent.dwTimeStamp;
 
//Ne fonctionne pas :
       *Raw_Buff=(string)"Hello World";
}
Et dans mon programme principal, les déclarations :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
        private long    ID, time;
        private short   len = 8;
        private string  Raw_Buff;
 
 
 public void StartCan()
{
            Raw_Buff=new string();
            if (i== Open())
            {
                if (Activate() == 0)
                {
                    while (!fin)
                    {
                        try
                        {
                            Receive(ref ID, ref time, ref len, ref Raw_Buff);
                            [...]
Retour :
ID = 100
time = 1252
len = 8
Raw_Buff=null

Si quelqu'un est inspiré, c'est pas de refus, j'ai tenté à peu près tout ce que j'imaginais ...

Merci