Communication C# - C via DLL
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:
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:
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 :)