¿Cómo crear una dll que exporte funciones tipo "API de Windows"?
Si queremos aseguranos que un API pueda se llamada desde cualquier lenguaje, la mejor opción es crear una dll que exporte funciones al estilo del API de Windows, es decir al estilo C. Casí cualquier lenguaje de programación cuenta con un mecanismo para llamar a esta clase de funciones, porque es el tipo de funciones que exporta el API de windows. Quiza la única excepción es Visual Basic Script, si quieres construir una API que pueda ser llamada desde VBS y desde cualquier lenguaje que soporte COM
lee este post anterior.
En Visual Studio debes optar por crear un proyecto Win32 de tipo dll.
A partir de aquí solo necesitas crear funciones y exportarlas. El truco esta en exportarlas como hace el API de Windows.
Realmente no tiene ninguna complicación. Lo unico que tienes que elegir es la convención de llamada adecuada para las funciones que exportes, __stdcall o su alias WINAPI.
Además debes declarar estas funciones como extern "C" y ponerlas en el archivo .def (si no exite en la solución añadelo), para evitar que los nombres de función se exporten decorados.
Debes declarar las funciones de este modo, en el archivo .h
extern "C"
{
void WINAPI TuFuncion(...);
int WINAPI TuFuncion2(...);
}
Y tener en el archivo .def (si no exite añadelo) algo similar a esto:
LIBRARY yourLibraryName
EXPORTS
TuFuncion @1
TuFuncion2 @2
Además se que en el cd de instalación de VB 6.0 hay un documento word que describe este mismo asunto en detalle, no dudeis en buscarlo (no recuerdo el nombre) y leerlo.
Tambien es interesante este articulo de la KB