0

我在 c# 中使用本机 C++ dll,如下所示:

C++ 函数:

poly* f1(/*some input data*/);
double* f2(poly* p);

在 c# 中,我正在做:

(这是适当地使用不安全和固定的块来完成的,所以不用担心)

void* ptr  = f1(/*input data*/);
double[] result = f2(ptr);

现在,如果我从 打印数据f2,我会得到一些损坏的数据,垃圾值。有些值是正确的。我想知道,是因为将其保存在 void 指针中ptr吗?还是那很好,原因是别的?

4

1 回答 1

0

我猜编组器无法自动将 double* 转换为 double[],因为它不知道数组有多长,并且可能存在很多其他问题。理想情况下,您必须至少给我们 C++ 中的头文件,在 C# 中声明您的 DllImported extern 方法,然后我们可以更深入地研究这个:)

于 2013-11-28T12:03:23.773 回答