Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Como puedo hacer llamadas a la dll?

Iniciado por oriolgs58, 29 de Diciembre de 2009, 10:29:22 AM

« anterior - próximo »

oriolgs58

Hola gente.
Estoy intentando llamar a la dll de DXLib32 a través de autoit pero no hay forma.
He utilizado un programa dll export de nirsoft para darme todas las funciones, métodos y propiedades de la dll pero no encuentro ninguna para inicializarla. He probado con cosas del tipo 4o=ObjCreate("dx_gfx_class.init") y cosas por el estilo, también objcreate("dxlib32_220") pero ninguna me funcionó. Si me podeis ayudar os estaría muy agredecido. :)

[EX3]

No se como funcionara exactamente el suso dicho Autoit pero si usa VBScript como interprete supongo deberia tener su metodo CreateObject() para crear una instancia a un objecto ActiveX mediante referencia. No estoy puesto en materia en lo que a VBScript se refiere (me sacas de VB6 y sus mecanismos de comunicacion COM y me pierdo) pero se supone que deberia ser algo como esto:
Dim gfx
Set gfx = CreateObject("dxlib32_220.dx_gfx_class")


Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

oriolgs58

Cita de: [EX3] en 29 de Diciembre de 2009, 11:53:25 AM
No se como funcionara exactamente el suso dicho Autoit pero si usa VBScript como interprete supongo deberia tener su metodo CreateObject() para crear una instancia a un objecto ActiveX mediante referencia. No estoy puesto en materia en lo que a VBScript se refiere (me sacas de VB6 y sus mecanismos de comunicacion COM y me pierdo) pero se supone que deberia ser algo como esto:
Dim gfx
Set gfx = CreateObject("dxlib32_220.dx_gfx_class")


Salu2...

Sigue sin funcionarme, la línea que estoy usando es:
$o = ObjCreate("dxlib32_220.dx_gfx_class")
Me devuelve 0 es decir como si la dll o la clase o algo no existiera.También he intentado
$o = ObjCreate("dxlib32_220")
Y tampoco. Por ejemplo, la manera que normalmente se crearía un objeto com sería algo como
$o=objcreate("jfwapi")
o
$sapi=ObjCreate("SAPI.SpVoice")
Eso significa que en teoría la primera línea que me pusiste debería de funcionar. Hay alguna forma de ver el código de las clases devb? Es decir los archivos cls donde se encuentra el código de las clases? Seguro que alí tiene que inicializarse la dll de alguna forma...

Gracias por las molestias que te estás tomando.

oriolgs58

Ah y para responder tu pregunta, el autoit no está basado en vbs pero sí abre librerías com, por eso pensé que podría abrir dxlib. Quizá estoy equivocado, no lo sé. Espero que no...

[EX3]

En teoria la llamada es correcta ya que en VB6.0 me ha funcionado. Luego, las librerias y componentes generados con VB6.0 se supone utilizan la interfaz estandar COM para ActiveX, esto es que serian visibles inclusive en C++ o cualquier lenguaje o plataforma que soporte interfaz COM (luego otra cosa sea que en la practica no sea al 100%, ni idea)

Doy por hecho que tienes instalado el paquete de librerias que se baja de la pagina, nada de instalar a maneja la dll, no? Si es asi y el componente esta registrado deberia funcionar, si no quizas sea alguna incompatibilidad con Autoit. De ser el caso poca ayuda podria ofrecerte ya que no trabajo (ni conocia hasta hoy) en esa plataforma. De hecho, solo puedo garantizar compatibilidad en VB6.0 y VB.NET, fuera de ahi quizas haya alguna historia concreta de VB6.0 que no sea compatible con el resto de plataformas y lenguajes.

Cita de: oriolgs58 en 29 de Diciembre de 2009, 02:41:10 PM
Hay alguna forma de ver el código de las clases devb? Es decir los archivos cls donde se encuentra el código de las clases? Seguro que alí tiene que inicializarse la dll de alguna forma...
Las clases no hacen ninguna inicializacion rara (de hecho no es que las clases de VB6.0 permitan hacer mucho con su constructor genérico) salvo dar valores iniciales a ciertas variables y alguna referencia temporal con algún objeto de DirectX. El unico error que podria suceder al inicializar alguna de las clases es por que falte la dependencia de DirectX8 (dx8vb.dll) o no este registrada, pero fuera de eso, o que dx_lib32 no este registrada o poco mas sabria decirte.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.