I am using native C++ dll in c#, like this:
C++ functions:
poly* f1(/*some input data*/);
double* f2(poly* p);
In c#, I am doing:
(This is done using unsafe and fixed blocks appropriately, So don't worry about that)
void* ptr = f1(/*input data*/);
double[] result = f2(ptr);
Now If I print data from f2, I get some data corrupted, garbage values. And some values are correct. I want to know, Is it due to saving that in void pointer ptr? Or is that fine and reason is something else?
I'd guess that the marshaller can't automatically convert double* to double[], because it has no idea how long the array is, and there could be a lot of other issues. You have to give us ideally at least the header file in C++, the declaration of your DllImported extern method in C# and then we can dig deeper into this :)