FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
||||
|
||||
Caso con DLL.
Tengo una DLL e hice la prueba de eliminarla para ver si mi programa iniciaba. El resultado es que el programa se cierra luego de mostrar este mensaje:
Cita:
Lo que deseo es saber si hay forma de que el programa se pueda ejecutar aunque la librería no esté presente, ya que no es estrictamente necesaria para el funcionamiento del programa. Gracias.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre. |
#2
|
||||
|
||||
Hola,
Hay una contradicción en lo que dices, porque, si la librería no es estrictamente necesaria para el programa, ¿cómo es que el programa no puede trabajar sin esa librería? |
#3
|
||||
|
||||
Si te da ese error es que el programa, lógicamente, está haciendo uso de alguna función que se encuentra implementada en la .dll, por lo que es imposible ejecutarlo si dicha .dll no está.
(La única solución que veo, si tienes el código fuente, es modificar el programa para que no use esa .dll) Chao! |
#4
|
||||
|
||||
Hasta donde entiendo tendrás que cargar manualmente la librería con LoadLibrary y asignar las funciones contenidas en ellas con GetProcAddress. Deberás quitar cualquier referencia a la librería que tengas en tu código para que no se cargue automáticamente. Por ejemplo, cualquier importación
hará que se cargue en automático. // Saludos |
#5
|
||||
|
||||
Cita:
Pero esto no significa que siempre sea necesaria. Es posible que sólo algún módulo del programa utilice la librería. Mientras no se use dicho módulo el programa puede funcionar. De ahí, supongo, la necesidad de poder ejecutar la aplicación aún sin la librería. Sólo los módulos que la usen estarían inhabilitados. // Saludos |
#6
|
||||
|
||||
Hola,
Puede ser roman. No lo vi yo por ese lado, sino por otro. El programa hace uso de la librería, depende de esta, en más o menos, en un módulo u otro, por tanto, si se quita la librería el programa (al completo) no funcionará correctamente. Ahora, si se trata de que algunos módulos funcionen y otros no... ¿no habrá otra forma de hacer las cosas que no quitando y poniendo la librería de marras? |
#7
|
||||
|
||||
roman tiene razón. Lo que él dice es exactamente lo que sucede. La librería se usa sólo desde una ventana de mi aplicación, y no es crítica para el funcionamiento del sistema. Aunque claro, si no está algo no funcionará, pero es muy poco en realidad.
Muchas gracias por su respuesta. Voy a trabajar con LoadLibrary y GetProcAddress.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre. |
#8
|
||||
|
||||
Hola,
Cita:
|
#9
|
||||
|
||||
Cita:
Si alguien me dice: le quite la rueda a mi auto para ver si funcionaba sin ella, supongo de antemano que se está refiriendo a la rueda de refacción. // Saludos |
#10
|
||||
|
||||
Hola,
Vale. Quito adivino. Pero, si la rueda de refacción es la rueda de repuesto y a mí alguien me dice "le quité la rueda a mi auto para ver si funcionaba bien", sin decirme que la rueda en cuestión es la rueda de repuesto,... pues acaso le diga que cómo se le ocurre hacer el loco con su coche de esa manera, que con tres ruedas lo menos es que se la pege. No corras, papá. Última edición por dec fecha: 18-08-2005 a las 23:03:26. Razón: (corrección del texto) |
#11
|
||||
|
||||
mlara:
Te pongo un ejemplo que he visto de cómo cargar en tiempo de ejecución la librería y sus funciones.
loadlib carga la librería y asigna a la variable mysql_connect (que es de tipo funcion) la dirección de la función en el dll. El procedmineto local assign_proc es para facilitar la asignación en caso de que haya muchas funciones. Si la librería no se encuentra, loadlib regresa false. Si ya no necesitas la librería, puedes descargarla con
// Saludos |
#12
|
||||
|
||||
Gracias roman. Reescribí un poquitín el código y funcionó bien. Ahora sólo ejecuta las funciones de la DLL cuando esta está disponible, y si no lo está, igual la aplicación corre.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre. |
#13
|
||||
|
||||
¡Hola a todos!
Cita:
Aprovecho la ocasión para invitarlos a cambiar el uso de "librería" por biblioteca, el cual es el término correcto. Un abrazo profesional. Al González. Última edición por Al González fecha: 19-08-2005 a las 04:55:40. |
|
|
|