SafeArrayTypeMismatchException - .NET GURUS PLEASE HELP

P

Phoenix

Hi .NET Masters :)

Please help me to get out of following situation ...

There is a function in one of my dlls whose signature is as follows :
my_function(integer X, integer Y, char* Z, HAD A, HAD P)

Here HAD is defined as follows in one of the header files as :

#define HAD LPSAFEARRAY FAR *


The above dll was written in VC++ 6.0 . I use to call this function
in my Visual Basic 6.0 application.

Recently , I upgraded my Visual Basic application and found
that its giving "SafeArrayTypeMismatchException"

Declaration for my Function is as follows :

Declare Function my_function Lib "tcvbadm.dll" (ByVal X As Integer,
ByVal Y
As Integer, ByVal Z As String, A() As String, A() As Integer) As
Integer

And the way I am calling in my VB application is as follows :

Dim li_count as Integer
ReDim la_leaf(li_count) As String
ReDim la_access(li_count) As Integer

retcode = my_function(X, Y, Z, A(), B()) ' HERE I AM GHETTING THE
EXCEPTION
WHERE AS IT WAS WORKING WELL PREVIOUSLY




'I fetch li_count through a different fi=unction call which returns an
integer value.


Please let me know if any further info is reqd regarding this. Any
help
would be highly apprecaited ,
Thanks a lot in advance.

Thanks & Regards


Sudhansu Tiwari
 
C

Chris Dunaway

Hi .NET Masters :)

Please help me to get out of following situation ...

There is a function in one of my dlls whose signature is as follows :
my_function(integer X, integer Y, char* Z, HAD A, HAD P)

Here HAD is defined as follows in one of the header files as :

#define HAD LPSAFEARRAY FAR *

The above dll was written in VC++ 6.0 . I use to call this function
in my Visual Basic 6.0 application.

Recently , I upgraded my Visual Basic application and found
that its giving "SafeArrayTypeMismatchException"

Declaration for my Function is as follows :

Declare Function my_function Lib "tcvbadm.dll" (ByVal X As Integer,
ByVal Y
As Integer, ByVal Z As String, A() As String, A() As Integer) As
Integer

And the way I am calling in my VB application is as follows :

Dim li_count as Integer
ReDim la_leaf(li_count) As String
ReDim la_access(li_count) As Integer

retcode = my_function(X, Y, Z, A(), B()) ' HERE I AM GHETTING THE
EXCEPTION
WHERE AS IT WAS WORKING WELL PREVIOUSLY

'I fetch li_count through a different fi=unction call which returns an
integer value.

Please let me know if any further info is reqd regarding this. Any
help
would be highly apprecaited ,
Thanks a lot in advance.

Thanks & Regards

Sudhansu Tiwari

I don't know what the problem is, but one thing you need to keep in
mind is that integers in .Net are 4 bytes. If the original function
signature (from the VC++ 6 dll) was asking for integers, in .Net that
translates to the short data type so you need to change your declare
statement accordingly.

Chris
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top