• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 417
  • Last Modified:

Unmanaged DLL: C# variable for C++ char**


I'm making an application that works with buffers. I have to call some C++ functions with data pointers as arguments. I'm trying to not use unsafe code.
One of the functions have two parameters of type char*. I've defined on C# two buffers:

byte[] Buffer1 = new byte[SIZE];
byte[] Buffer1 = new byte[SIZE];

On the dllimport I use marshaling:
[MarshalAs(UnmanagedType.LPArray)] byte[] buffer1,
[MarshalAs(UnmanagedType.LPArray)] byte[] buffer2,

These two buffers are filled by the C++ function.
Two retrieve the data of the buffers, I use another C++ function. This function returns in a parameter the last buffer filled:

void FillBuff(char **Pbuff);

Pbuff is a pointer to one of the byte[] buffers defined above.
The problem is that I don't know how to define a C# to assign the pointer returned by the C++ function and accessing to the buffer's content. I've tried several thigs with no success, some of them dying at compilation time, others at execution time.

Any suggestion?

Thanks in advance
1 Solution
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now