problema al pasar una struct de C++

Iniciado por el_c0c0, 31 Marzo 2009, 00:34 AM

0 Miembros y 1 Visitante están viendo este tema.

el_c0c0

Estoy haciendo un plugin para winamp... tengo el SDK (que en realidad no es muy explicativo, pero sirve)
En fin, es una DLL no ActiveX, hasta ahi todo en orden.
Para que el Winamp la tome como General Purpose Plugin, el nombre tiene que empezar con gen_xxxxxxx.dll y exportar "winampGetGeneralPurposePlugin".
Hasta aca sigue todo en orden, exporta eso y todo bien.
Referiendonos a esa funcion, debe devolver un puntero hacia una estructura que luego el Winamp recorre para obtener las direcciones de las 3 funciones principales: init, config y quit.
La estructura en C++ es asi:
Código (cpp) [Seleccionar]
typedef struct {
int version;
char *description;
int (*init)();        //me imagino que es un puntero a la funcion INIT
void (*config)(); //lo mismo, pero para config
void (*quit)();    //y para quit lo mismo
HWND hwndParent;
HINSTANCE hDllInstance;
} winampGeneralPurposePlugin;


y yo de alguna manera la traduci a VB6:
Código (vb) [Seleccionar]
Public Type winampGeneralPurposePlugin
    version As Long
    descrpition As Long 'probe con String, pero igual explota
    init As Long
    config As Long
    quit As Long
    hwndParent As Long
    hDllInstance As Long
End Type

(si es muy estupido, todo long)

Volviendo al tema, el Winamp llama a la direccion que le paso yo en Init, pero si esa funcion devuelve 0 (como deberia segun el SDK y otros plugins) el Winamp explota. Si devuelvo otro numero, tipo 1 o -1, el Winamp se encarga de descargar la DLL...

Ademas, description si le paso strptr() hace lo mismo.. nose donde puede estar el problema..

Por si preguntan, carga la dll, llama a las funciones y esta todo debugueado por eso les puedo asegurar que hasta que no retorna nada Init, funciona.


saludos
'-     coco
"Te voy a romper el orto"- Las hemorroides