gpt4 book ai didi

c++ - 在 C# 中将数组数组传递给 DLL 的安全方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 23:10:15 27 4
gpt4 key购买 nike

我有一个要传递到 DLL 中的数组数组。我遇到错误“没有对嵌套数组的编码(marshal)处理支持。”

我可以很好地传递单个数组,但如果我将它们堆叠起来,就会失败。我需要/想要一种传递数组数组的“安全”方式。

private static extern int PrintStuff(string[][] someStringsInGroups, int numberOfGroups, int[] lengthSetsInGroups);

编辑:我也愿意,带着足够的沮丧和痛苦,接受涉及编码的解决方案。

最佳答案

您可以将 double 组转换为单个数组(即展平)。这可以通过保留宽度和高度变量并访问索引来完成:

string atXY = someStringsInSingleArray[(y * width) + x];

数组可以这样转换:

string * array = new string[width * height];

for (unsigned int y = 0; y < height; ++y)
{
for (unsigned int x = 0; x < width; ++x)
{
array[(y * width) + x] = someStringsInGroups[x][y];
}
}

// (pass single array to dll)

delete [] array;

关于c++ - 在 C# 中将数组数组传递给 DLL 的安全方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1732208/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com