【发布时间】:2018-04-26 15:06:33
【问题描述】:
在我的 C++ 原生插件中,我有一个调用
vector<unsigned char> getCPPOutput() {
return some_vector;
}
在我的 C# 端我有电话
[DllImport("MySharedObj")]
static extern byte[] getCPPOutput();
出于某种原因,尽管我在这两个调用之间存在不匹配,即如果在我的 C++ 中检查作为输出得到的数组的大小:16777216(针对我的具体情况)。
当我检查字节数组的大小时,我得到:170409961
在 C# 上的调用非常简单,类似于:
byte[] outputBuffer = getCPPOutput();
没有任何预分配。在调用函数之前我需要做些什么吗?
我根本不是 C# 专家,可能我错过了一些非常愚蠢的东西。
【问题讨论】:
-
您是否使用
.size或.max_size在C++ 中检查向量的大小?向量后备存储可能比向量中的实际数据大,尽管很难想象它会大得多。 -
@RonBeyer 我正在使用
.size。