En tiempos remotos, yo desarrollé algunas aplicaciones en QuickBASIC (v4.5), FORTRAN (v3.31) y C (v6.0), todas ellas de Microsoft. Había que tener en cuenta algunos detalles, como que el programa principal debía estar escrito en Basic, que FORTRAN, al pasar cadenas de caracteres como parámetros, pasaba un parámetro oculto con la longitud de la cadena (lo cual había que tener en cuenta en las llamadas de FORTRAN a C y viceversa, y no recuerdo si con BASIC pasaba algo parecido).
La manera de compilar y enlazar era sencilla: Se compilaban por separado los módulos en FORTRAN y/o C, para obtener los archivos .OBJ, y luego se añadían estos a la lista de archivos a enlazar con el programa principal.
Para hacerlo desde Visual Basic, no será muy distinto: Desarrolla los módulos que necesites en C y compílalos. Podrás crear un archivo .OBJ, .LIB ó .DLL, que tendrás que añadir a la lista de archivos de tu proyecto principal.
El programa principal en Visual Basic será un, digamos, esqueleto, en el que tú pones las funciones que van a ser llamadas cuando acciones un control. Es dentro de estas funciones donde efectúas las llamadas a las funciones en C que has desarrollado.
No es fácil, te sugiero que pruebes primero con cosas pequeñas (una o dos funciones), lo del paso de parámetros puede ser sumamente delicado.
Otra cuestión es el compilador C (o C++) que vayas a utilizar. Puedes tener problemas por incompatibilidad de los formatos de los códigos objeto, si el compilador no es de Microsoft.
Resumiendo, la cosa es complicada. Mi recomendación es que intentes hacer el desarrollo en un solo lenguaje.
Saludos,