Passing a 2d array from vb.net to unmanaged C++ dll
Hi,
I'm trying to pass a bi-dimensional array of integers from vb.net to a c++
dll (in fact - a matrix that has to be processed in the dll) and then I need
the results back in the vb.net application.
I tried using the same approach as when passing a simple array (see example
below) but didn't succeed.
C++ function to process the array:
int Cmfcw001App::TestArr(int *ar, int size) {
//read the first element for test
int k;
k = ar[5];
return k;
}
......
The function TestArr has been defined in the .def file.
The declaration in vb.net module
Public Declare Function TestArr Lib "<path>\mfcw001.dll" (ByRef ar As
Integer, ByVal size As Integer) As Integer
//****** Usage in vb.net code:
Dim ar(9) As Integer
For i = 0 To 9
ar(i) = -1 * i
Next
s = TestArr(ar(0), 10)
MsgBox(s)
On this pattern I tried replacing
int* ar with int** ar ,
ar(9) with ar(3, 3)
the call is now TestArr(ar(0, 0), 10)
in the dll the function tries to read k = ar[0][0]
The error message I get in vb.net is "Object reference not set to an
instance of an object" when reaching the call to TestArr.
Can anybody help, please ?
Thank you,
Andrei.