SoloCodigo
Programación General => Power Builder => Mensaje iniciado por: tulum en Viernes 6 de Agosto de 2004, 20:56
-
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
-
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