Gracias a la inestimable ayuda de _Leo, he resuelto el problema. Lo explico aquí por si a alguien le sirve de algo. En la DLL, hay que declarar las funciones que se exportan de la siguiente forma:extern "C" int __declspec(dllexport) __stdcall MiFuncion (int x);
Esto es una función con un parámetro y que devuelve un int. Luego en Visual Basic, hay que declarar la función de la siguiente forma:
Public Declare Function MiFuncion Lib "libreria.dll" (ByVal x As Integer) As Integer
Por cierto, que los parámetros que se pasen por valor, deben llevar la cláusula ByVal como indica la ayuda de VB.