Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Problema con Dll

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Problema con Dll Responder citando

Estoy haciendo un programita que necesita la carga de una dll llamada "MiDll.dll"
La cargo con LoadLibrary()

m_hDll=NULL;
m_hDll=LoadLibrary("MiDll.dll");

El problema que tengo es que siempre necesito que la dichosa Dll esté en la carpeta de la aplicación

Con ImpLib he hecho una libreria a partir de la dll.
Hay alguna manera de hacer que no se necesite tener la dll en la carpeta de la aplicación ?

Saludos al foro
Volver arriba
Mensaje    Asunto: Responder citando

Acabo de recorrerme todo el foro buscando algo que pueda ser aplicable en este caso y no he encontrado nada en 6 páginas que me ha devuelto una búsqueda

Espero que Leo o algún otro maestro pueda hecharme una mano en este problemilla

Gracias por adelantado
Volver arriba
Mensaje    Asunto: Responder citando

Has registrado la DLL?

el comando para hacerlo, al menos en Windows es regsvr32 "ruta_dll".

Saludos.
_________________
Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Gracias por contestarme Buildero

La he registrado pero sigo igual

Lo que esto buscando es alguna forma de cargar la Dll como un archivo de recursos o algo similar para que forme parte del exe
Volver arriba
Mensaje    Asunto: Responder citando

Haber si el lib esta incluido en tu proyecto la busqueda del dll(enlace estatico ) es del siguiente modo:

Directorio donde se encuentra el exe
Directorio system de windows
Directorio de windows
Directorios espeificados en el path

Pero podria crear una archivo de recursos https://cppbuilder.es/viewtopic.php?t=771
aunque necesariamente habria q extraerlo a algun directorio . Confused

Aunque no entiendo xq cargas dinamicamente y usas implib para obtener el lib Rolling Eyes

Para la carga dinamica solo es necesario el dll (Supongo q la busqueda se realiza del mismo modo q un enlace estatic) Wink

Saludos
_________________
Es dificil decir q es imposible xq el sueño de ayer es la esperanza de hoy y la realidad d mañana
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Hola

Lo he solucionado de la siguiente forma a falta de saber si Leo cree que existe otra forma mejor de hacerlo que seguro a el se le ocurre

He creado un archivo de recursos llamado recursos.rc y dentro de el he puesto la siguiente línea

MI_DLL RCDATA "MiDll.dll"

En la Unit1 he puesto lo siguiente:

unsigned char ArrayDll[65536]; // Tamaño de la Dll
FILE *pa;

TResourceStream(0,"MI_DLL",RT_RCDATA).Read(ArrayDll,65536);
chdir("C:\\MiProyecto\\");
pa = fopen("MiDll.dll","w+b");
fwrite(ArrayDll,65536,1,pa);
fclose(pa);

Con esto consigo primeramente que la Dll forme parte del ejecutable y cuando este arranque se crea la Dll en la carpeta MiProyecto

Solo me falta añadir un par de líneas mas para comprobar si ya existe el archivo MiDll.dll, siendo en este caso innecesario la creación del archivo en la ruta especificada

Con gusto admitiria una solución mas adecuada a mi problema

Un saludo al foro
Volver arriba
Mensaje    Asunto: Responder citando

Holas:

Me parece mas comodo extraer el dll del siguiente modo :

if(!FileExists("MiDll.dll"))
TResourceStream(0, "MI_DLL", RT_RCDATA).SaveToFile("MiDll.dll");


Saludos
_________________
Es dificil decir q es imposible xq el sueño de ayer es la esperanza de hoy y la realidad d mañana
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Completamente de acuerdo, es mucho mas elegante y además comprueba la existencia de la Dll

Se me escapa un ultimo detalle y es que en caso de no existir la dll en la carpeta C:\Windows\System32\ copiarla en esa carpeta

El problema que se me plantea es que la mayoria de los windows se instalan en C:\Windows, pero en ocasiones si no me equivoco Windows 2000 se instala en la carpeta C:\WinNt y en este caso la carpeta donde poner la dll seria C:\WinNt\System32

Hay alguna manera de saber donde está instalado windows ?

Muchisimas gracias por los consejos
Volver arriba
Mensaje    Asunto: Responder citando

Perdon por mi torpeza

Lo acabo de encontrar en este foro

char WinDir[MAX_PATH +1];
WinDir[MAX_PATH] = '\0';
GetWindowsDirectory(WinDir,MAX_PATH);



Gracias de nuevo
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.