Power Builder - PARA OSCAR

 
Vista:

PARA OSCAR

Publicado por Darwin (19 intervenciones) el 08/04/2004 21:36:35
En un foro anterior tu explicaste como crear una libreria secreata para ubicar alli algun objeto cuyo codigo no se quiere que se vea, pues bien, yo segui tus indicaciones y cree una libreria utililidades.pbd , en esta libreria cree un objeto uo_utilidades y alli defini algunas funciones de usuario, hasta alli todo bien, porque puedo llamar y ejecuta las funciones que estan creadas en el objeto sin ningun problema, y teniendo solamente la libreria.pbd en la lista de librerias (Target), pero el problema surge cuando quiero crear el ejecutable, me da el sig. error:
(Error reading object sourde entry: uo_utilidades.sru).
No se si se puede hacer esto, y si es asi , como debo hacerlo o que estoy haciendo mal

Desde ya muchas gracias, y e espero tu ayuda
Un saludo desde Ecuador.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:PARA OSCAR

Publicado por Oscar (1178 intervenciones) el 09/04/2004 00:58:58
Si piensas distribuir esa pbd para que prueben los usuarios, sin que vean tu código, está bien; y si ellos al tratar de compilar o integrarlo a sus aplicaciones, sale ese error; entonces bendito error!, que te conviene a tí.

Pero si tu mismo, estás tratando de incluir en tu aplicación una pbd compilada, sabiendo que tienes el código fuente a tu disposición; no encuentro ningún sentido a esa acción; ya que tranquilamente puedes emplear la pbl en tu aplicación y al final de la compilación, se supone que toda tu aplicación está compilada y a salvo de cualquier curioso que desee ver tu código. Bueno, pero en programación cada quien sabe lo que hace.

Ahora respondiendo a tu pregunta. La idea de crear un pbd para proteger el código me inspiró la librería dw2xls:

http://www.lawebdelprogramador.com/news/mostrar_new.php?id=73&texto=Power+Builder&n1=151257&n2=0&n3=0&n4=0&n5=0&n6=0&n7=0&n8=0&n9=0&n0=0

En cuya pbd, usan objetos de usuarios y funciones sin ningún problema. Creo habría que indagar cómo compilaron esa pbd. Por mi parte, hice la prueba de compilar sólo una ventana que contenía una calculadora (respondiendo exactamente a un post), y no hubo ningún problema en la compilación.

Al final de todo ésto, las ideas están un poco confusas; por eso te sugiero que veas los post recientes:

http://www.lawebdelprogramador.com/news/mostrar_new.php?id=73&texto=Power+Builder&n1=163367&n2=1&n3=1&n4=0&n5=0&n6=0&n7=0&n8=0&n9=0&n0=0

Y sigas probando con ejemplos más sencillos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:PARA OSCAR (se probó con objeto de usuario)

Publicado por Oscar (1178 intervenciones) el 09/04/2004 23:03:48
Hola Darwin:
Recién comprendo la importancia de compilar la aplicación, cuando en la misma existe una pbd ya compilada. El objetivo es que puedes "regalar" o "vender" esa pbd; para que otros programadores puedan incluirla en su aplicación y crear un ejecutable. Pero no podrán ver el código de tu libreria; sólo podrán usarla.

Ahora sí, para salir de dudas, cree en una librería_secreta con un objeto de usuario no visual llamado: n_cst.miobjeto. Dentro de ella existía una simple función: of_sumar, que sumaba dos números.

Se podía llamar a esa función sin problema desde cualquier ventana; por supuesto, antes me aseguraba de crear una instancia del objeto con CREATE y antes de salir de la ventana lo destruía con DESTROY.

Luego procedí a compilar sólo la librería de la aplicación (sin crear ejecutable). ¿Como?.
Dí clic derecho en libreria_secreta.pbl y elegí: Build Runtime Library. De esa manera se creó una libreria_secreta.pbd.

-Incluí esa librería_secreta.pbd en una nueva aplicación (de la forma que ya sabemos) y cuando llamé a la función of_suma de la libreria_secreta, funcionó.

- Logré crear un ejecutable en esta nueva aplicación. Las conclusiones son:
* Puedes compilar ya sea full o incremental.
* Puedes compilar en pscode o código máquina.
* Puedes convertir las OTRAS librerías en dll; pero no se te ocurra activar la casilla de la libreria_secreta.pbd para convertirla en dll. Cuando compilas así, no se resiente PB; pero aparece un error cuando haces correr desde el ejecutable.
"Unresolvable external n_cst_miobjeto when linkinh reference"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:PARA OSCAR (se probó con objeto de usuario)

Publicado por GRACIAS OSCAR (19 intervenciones) el 11/04/2004 21:40:18
Hola Oscar
Exactamente eso era lo que uo pretendia lograr con lo de la libreria secreta, compartir cierto codigo, pero a nivel de pbds, pero permitiendo que dichas librerias puedan ser incluidas en otras aplicaciones y se puedan generar ejecutables sin necesidad de entregar tu codigo fuente.
Bueno, sabes que logre resolver mi priblema , como tu me indicabas probe con un objeto mas sencillo, y el problema surgia cuando en el objeto incluia una funcion que hacia una llamada a una API de Windows la cual la tenia declarada como una GLOBAL EXTERNAL FUNCTION, lo resolvi declarandola como LOCAL EXTERNAL FUNCTION
y asi puede compilar y generar el ejecutable sin ningun problema.

Gracias Oscar Por tus sugerencias, en verdad me fueron de utilidad.

Algo que quisierea saber, si tu tienes conocimeinto es que si en PowerBuilder puedo generear una dll de funciones que luego las pueda llamar declarandolas como FUNCIONES EXTERNAS en PowerBuilder, como se hasce con las APIS de Windows.
Trabajo con PB 8.0
Espero tu comentario.

Un Saludo desde Ecuador
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE: Generar dll desde PB...

Publicado por Oscar (1178 intervenciones) el 13/04/2004 19:01:49
Hola .
Sabemos que PB puede generar dll; pero no me atrevería a afirmar o negar si es posible crear dlls en PB para luego declararlas como FUNCIONES EXTERNAS. Simplemente, porqué no encontré documentación que muestre esa situación.

De manera personal, no creo que sea posible; porque si piensas llamar a una dll de esa manera, supuestamente podrían llamarla otros lenguajes de la misma manera que llaman a las APIS. Creo eso es exclusividad de C++.

- En un enlace, simplemente dice:
Crear una Dll en C++ y usarla en PB
http://www.rgagnon.com/pbdetails/pb-0123.html

Podía haber dicho: Crear una dll en PB y usarla en PB, declarándola externamente.

- La versión 9 de PB, creo es la más integrada con C++. Por ejemplo permite crear en un objeto de usuario, y codificar en C++, para generar una "hello.dll"

http://sybooks.sybase.com/onlinebooks/group-pb/adt0650e/class/@Generic__BookTextView/522

Pero que esa dll, sea usado en varios lenguajes, no sé; creo lo más importante es que se use en PB.

Seguimos investigando...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar