C#在调用C++时,如果返回结果数量固定,无需使用List等动态列表时,可以直接通过将固定大小的数组做为参数传入方法,C++端接收到该数组之后可以直接操作该数组,将结果写入到该数组中,无需使用返回结果。
C++
extern "C" __declspec(dllexport) void __stdcall ArrTest(double* input, double* output);
void __stdcall ArrTest(double* input, double* output)
{
output[0] = input[0];
output[1] = input[1];
output[2] = input[2];
}
C#
namespace test
{
class Program
{
[DllImport("libDemo", EntryPoint = "ArrTest")]
public static extern void ArrTest(double[] input, double[] output);
static void Main(string[] args)
{
double[] output= new double[3];
ArrTest(new double[] { 0.121, 1.454, 22.241}, output);
foreach (var item in output)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
}
}