| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
vizca321 Lt


Registrado: 06 May 2008Mensajes: 83Ubicación: Mexico
|
Publicado: Jue 01 Ene, 2015 7:09 pm Asunto: Convertir funcion en una dll |
|
|
Hola quisiera saber como convertir esta funcion en una libreria dinamica
| Código: | void ListarDir(String dir, TStrings* sl)
{
TSearchRec sr;
bool finalizado = FindFirst(dir + "\\*.*", faAnyFile, sr);
while (!finalizado)
{
if(sr.Name != "." && sr.Name != "..")
{
if (sr.Attr & faDirectory)
ListarDir(dir + "\\" + sr.Name, sl);
else
sl->Add(dir + "\\" + sr.Name);
}
finalizado = FindNext(sr);
}
FindClose(sr);
}[quote][/quote] |
|
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Sab 03 Ene, 2015 12:41 am Asunto: |
|
|
Crea un proyecto dll que incluya VCL.
Escribe la función en él y la exportas así:
| Código: |
extern "C" __declspec(dllexport)
void ListarDir(String dir, TStrings* sl)
{
TSearchRec sr;
bool finalizado = FindFirst(dir + "\\*.*", faAnyFile, sr);
while (!finalizado)
{
if(sr.Name != "." && sr.Name != "..")
{
if (sr.Attr & faDirectory)
ListarDir(dir + "\\" + sr.Name, sl);
else
sl->Add(dir + "\\" + sr.Name);
}
finalizado = FindNext(sr);
}
FindClose(sr);
}
|
Para usarla la importas así:
| Código: |
#pragma link "MIDLL.LIB"
extern "C" void ListarDir(String dir, TStrings* sl);
|
Saludos. |
|
| Volver arriba |
|
 |
vizca321 Lt


Registrado: 06 May 2008Mensajes: 83Ubicación: Mexico
|
Publicado: Sab 03 Ene, 2015 7:01 pm Asunto: |
|
|
| Genial otra cosa mas donde me puedo orientar hacerca de este tipo de librerias |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Dom 04 Ene, 2015 5:43 pm Asunto: |
|
|
Yo empezaría en la ayuda de Builder.
No hay mucho que saber, sólo que son librerías de enlace dinámico que cargan las app para acceder a sus funciones. Que todas tienen un punto de inicio y fin, que se ejecutarán al cargarse y al descargarse y que puede tener unas funciones exportadas, "visibles desde fuera" y otras privadas, no visibles. Cada app las carga una vez, por lo tanto no son adecuadas para compartir datos, sólo código.
Las funciones de una dll pueden ser importadas por la app de forma estática, como te mostré arriba, o de forma dinámica con la API GetProcAddress. Tienes información en el foro sobre este tema.
Busca en la ayuda de builder y en sangoogle.
Saludos. |
|
| Volver arriba |
|
 |
|