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 :
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 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"; }
Retour :
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); [...]
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![]()
Partager