Mmm... ¿sabes cuál es la arquitectura de VB? Asumo que no. Bien. Cualquier cosa de VB: clases, DLLs, cajas de texto, ActiveX, etc, que empleas son en realidad componentes COM. El compilador de VB lo que hace es ocultar todos estos detalles al programador. Por ende, VB acepta cualquier cosa que sea COM, desde componentes sencillos hasta ActiveX.
Entonces, para emplear tus clases de C++ en VB no es cuestión simplemente de agregar la referencia. Tienen que ser componentes COM, que implementen la interfaz IUnknown, que haya un IClassFactory en la DLL con los cuatro métodos estándares y que se registren en el Registry de Windows. En otras palabras, tendrías que convertir tus clases en componentes COM, lo cuál es algo... er... complicado. ATL te provée de buena ayuda.
La otra es que emplees puras funciones de C, las cuáles sí admite VB directamente a través de ABI, aunque hay que tener en cuenta que el correspondiente C del tipo de dato String de VB, es BSTR*, no simplemente char o wchar_t.
Saludos.