¿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

6 comentarios sobre “¿Cómo crear una dll que exporte funciones tipo "API de Windows"?”

  1. Mi opinión, es que te quidas a medias, vamos que
    la explicación en poble y decadente;
    dejas muchas lagunas a medias, quitandote el marrón
    y enlazando con la pagina de $M que claro todo esta
    en el puto ingles.

    Nota: Te puedes Superar para la prox. vez!!

  2. Me gustaria saber si se pueden crear y exportar eventos en la libreria, y a su vez como se podrian llamar desde un proyecto visual basic

  3. Gracias por la contestación, eres realmente rápido.
    En el segundo enlace no puedo ver los ejemplos. No los encuentra.
    Podrias indicarme como verlos.
    Digamos que quiero hacer una libreria tipo COM para una aplicacion de smart device en visual basic. Sabrias como??

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *