I have created a .NET DLL which makes some methods COM visible.
One method is problematic. It looks like this:
bool Foo(byte[] a, ref byte[] b, string c, ref string d)
VB6 gives a compile error when I attempt to call the method:
Function or interface marked as restricted, or the function uses an Automation type not supported in Visual Basic.
I read that array parameters must be passed by reference, so I altered the first parameter in the signature:
bool Foo(ref byte[] a, ref byte[] b, string c, ref string d)
VB6 still gives the same compile error.
How might I alter the signature to be compatible with VB6?
Declaring the array argument with "ref" is required. Your 2nd attempt should have worked just fine, perhaps you forgot to regenerate the .tlb?
Tested code:
Something related to this was my problem. I have a method in C# with the following signature:
VB 6 kept on complaining "Function or interface marked as restricted ..." and I assumed it was my custom object I use in the call. Turns out VB 6 can not do long, had to change the signature to:
Try