• Lunes 18 de Noviembre de 2024, 03:39

Autor Tema:  Leer Dlls Generadas En Vb  (Leído 2914 veces)

tulum

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Leer Dlls Generadas En Vb
« en: Viernes 6 de Agosto de 2004, 20:56 »
0
Hola a todos,

Quisiera saber si alguno de ustedes ha leido desde PB una dll generada en visual basic 6, este es el codigo en visual:

Function sumando(x As Integer, y As Integer) As Integer

sumando = x + y

End Function

Genere una dll de prueba en VB que solo suma dos numeros y retorna el resultado pero me manda error en PB al querer leer la funcion, el error que me manda es: Bad runtime function reference at line 6 in click evet

Este es el codigo que utilizo para llamar la dll, tal vez tenga algun error

Declaro esta funcion en las Global External Function
Function int sumando(Int var1, Int var2) Library "sumatoria.dll"

"sumando" es el nombre de la funcion que declare en la dll y "sumatoria.dll" es el nombre de mi dll

En el evento click de un boton tengo este codigo:
Integer lires, livar1, livar2

livar1 = 5
livar1 = 3

lires = sumando(livar1, livar2)

MessageBox("SUMA", String(lires))

la dll la puse en la carpeta donde tengo mis pbls, la cambie a windows/system32/ , tambien la registre con regsvr32 pero me sigue mandando el mismo error

Ojala y me puedan ayudar

Gracias por su valiosa ayuda

ccasti

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Leer Dlls Generadas En Vb
« Respuesta #1 en: Martes 10 de Agosto de 2004, 06:11 »
0
las dll en visuyal son objetos com y como objetos com no se pueden hacer llamadas a fubciones externas como dll dinamicas. Lo que debes hacer en Powerbuilder es un CreateObject() contra las clases de la DLL.

Aqui te mando el ejemplo que tiene PB en la ayuda para que te puedas conectar:

OLEObject PBObject, PBNVObject

long ll_status
double ld_result

PBObject = CREATE OLEObject
ll_status = PBObject.ConnectToNewObject &
   ("PowerBuilder.Application")
IF ll_status = 0 THEN
   // Handle the error
ELSE
   PBObject.LibraryList = "c:\myappl\mylibrary.dll"
   PBObject.MachineCode = TRUE

   PBNVObject = CREATE OLEObject

   PBNVObject = &
      PBObject.CreateObject("nvo_myobject")
   IF IsNull(PBNVObject) THEN
      // Handle the error
   ELSE
      ll_status = PBNVObject.uf_calc &

(12, 14, REF result)
   END IF

   DESTROY PBNVObject
   PBObject.DisconnectObject( )
END IF

DESTROY PBObject

Espero que te sirva

Saludos

Carlos