c# - 如何将嵌套数组从 C# 编组到 C++?
问题描述
我正在用 C++ 制作一个 DLL 以在 C# 中使用。我需要将数组列表从 C# 传输到 C++ 向量。数组看起来像
[][]
[][]
.
.
我提到了这个答案,用于将 List 编组为 vector link。它适用于一维数组。但是对于提供嵌套数组的数组列表会给出错误“嵌套数组没有编组支持”。
我的代码在 C# 端看起来像这样,
[DllImport("./x64/Debug/Test.dll")]
public static extern void analysis([MarshalAs(UnmanagedType.LPArray)] double[][] values, int len);
static void Main(string[] args)
{
List<double[]> lst = new List<double[]>();
lst.Add(new double[] { 1.2, 1.3 });
lst.Add(new double[] { 2.3, 2.4 });
lst.Add(new double[] { 3.4, 3.5 });
analysis(lst.ToArray(), lst.Count);
}
在 C++ 端,
extern "C" __declspec(dllexport) void __cdecl analysis(double* values[], int len)
{
using namespace std;
vector<array<double,2>> ind(values, values + len);
int n = ind.size();
for (int i = 0; i < n; i++)
{
cout << ind[i][0] << ind[i][1] << endl;
}
}
另外,我不确定我是否正确编写了向量构造函数。我将非常感谢一些帮助。
解决方案
尝试使用 json。在 C# 中:
string jsonString = JsonSerializer.Serialize(lst);
然后在 C++ 中反序列化。
推荐阅读
- c# - 范围属性的 MSTest 单元测试
- c++ - 在构造函数中理解`std::move`
- javascript - Javascript 检查网站网址是否可访问
- php - PHP - 如何搜索日期并获得他们的总金额
- android - 如果针对 android over api 21,您是否需要 values-v21/styles.xml?
- html - 摆脱宽度属性并使用其他东西来排列两个文本
- python - 如何使用python从数据库(Sqlite)中的表中提取最大值
- ios - 在模拟器上运行时,颤振应用程序无法在 Mac 上运行给我错误
- c# - 错误:已添加具有相同密钥的项目。哪里有问题?
- ios - 如何在 AppStrore 中推广应用?