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(…);
}
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
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
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!!
Una pregunta tienes idea de algun tutoria que explique como crear DLL en Visual Studio,
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
El Loco, el mecanísmo habitual para proporcionar notificaciones en librerías de tipo API es utilizar funciones de callback.
Usar funciones de callback desde Visual Basic es posible usando AddressOf: http://www.codeproject.com/KB/vb-interop/NativeCode.aspx
Si quieres usar eventos, es mejor relaizar una librería de tipo COM usando ATL: http://geeks.ms/blogs/rcorral/archive/2006/05/01/292.aspx
Un saludo.
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??
alguna forma sencilla paso a paso para crearla?