【发布时间】:2015-11-16 06:34:59
【问题描述】:
我有一个调用 c++/clr dll(又调用本机 c++ dll)的 vb.net 可执行文件。我需要在所有三个之间传递数组。在 vb.net 中,我使用以下内容:
Dim arrsize = 10
Dim array(arrsize,arrsize) as Double
然后我将它传递给 c++/clr 代码
result = vbcalltocppcode(array)
在 c++/clr 代码中(在 public ref class 中,我在 vb.net 中创建了一个实例)
bool vbcalltocppcode(array<double,2>^ clrarray)
如果我尝试使用来提取它的长度
size_t cpparrsize = clrarray->GetLength(1);
cpparrsize = 11。这是为什么呢?是否有任何我看不到的开销或什么?
(原因是当我尝试在本机 c++ 代码中使用 2 级和 3 级数组填充它时,假设在本机 c++ 中该数组是一维的,我会丢失一些值,即放入一些值我不想要的 clrarray[*,11]。)
当然,我可以跳过我认为是第 11 个索引来解决这个问题,但因为我不确定这看起来有点危险。
【问题讨论】: