In the past in VB6 I’ve done it like this:
dim myStr as string * 10
This makes it a fixed length, null terminited char array that can be passed to c++. The problem is checking for buffer overflows on the c++ side.
If you can, I’d suggest using VB.NET classes and wrapping it with ActiveX. Using ActiveX in c++ should be fairly simple. Better yet, if you can convert the VC++ dll to .NET (managed code using .NET framework classes) you can skip the ActiveX part.
Otherwise, you can still compile C++ in .NET (unmanaged code and no .NET framework) and keep all your develpment in the same version of Visual Studio. Depending on what you’ve got in the c++ part we’ve had good luck doing this. The problem is that a string class in .NET framework and unmanaged code are 2 different animals and you cant pass them back and forth without a COM wrapper.