У меня есть исполняемый файл vb.net, который вызывает dll C++/clr (который, в свою очередь, вызывает родную dll C++). Мне нужно передать массивы между всеми тремя. В vb.net я использую следующее:vb.net и длина массива C++/clr
Dim arrsize = 10
Dim array(arrsize,arrsize) as Double
я передать это с ++/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-м индексом, но так как я не уверен, что это кажется немного опасным.
Спасибо большое @Hans Passant! –