From my research so far, Managed Extensions seem to be the way to go, but this seems to be very convoluted -- involved in going through most of the C++ code and 'managing' the unmanaged bits.
Are there any other options?
There's a lot left unsaid in your question but I'll take a stab at it anyway. It all comes down to what those C++ files do. If you can massage those files to produce full .NET classes (the __gc keyword and all that) you can compile them with Managed C++ and use them from Visual Basic .NET just fine. If those C++ files are COM components, you'll probably want to continue to compile them as COM components and use .NET InterOp in order to consume them from .NET. If those C++ files export a traditional C-type interface (functions), you may be better off compiling the code to a DLL and exporting those functions from the DLL. You can use those exported functions through .NET InterOp as well.
This was first published in November 2003