Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-06-2012
mweltmeister mweltmeister is offline
Registrado
NULL
 
Registrado: jun 2012
Posts: 7
Poder: 0
mweltmeister Va por buen camino
¿Como crear un ejecutable que llame un DLL?

Hola, muy buenas a todos.
Antes que nada, como soy nuevo en el foro, les doy mis felicitaciones por la voluntad y la ayuda de sus colaboradores.
Espero que con el tiempo y después de un largo aprendizaje, pueda colaborar y aportar ayudando a los demás como usuarios con grandes conocimientos que hay aquí lo hacen.

Soy nuevo en esto de la programación y decidí iniciarme con Delphi, se que lo primero que me van a decir es que "utilice el buscador"; Hace más de 3 horas (literal) que estoy buscando ayuda por todo internet (más que nada acá), vi muchos temas pero ninguno solucionó mi pregunta. Prácticamente me esta volviendo loco y por eso considero necesario abrir un nuevo tema para ver si me pueden ayudar.


Tengo un código DLL (solo el código) y decidí compilarlo en Delphi XE2, hasta ahí perfecto...

Para llamar a ese DLL y que se ejecute, necesito crear un ejecutable (valga la redundancia); Según el autor debemos crear un ejecutable que exporte la función "StartHook" para llamar.

La pregunta es: ¿Cómo creo un .exe que incluya la función "StartHook"?

Ya intenté lo siguiente: Crear el .exe pulsando F9 a lo que me sale el siguiente error: "Cannot run project unless a host application...".
Exacto, pero si solo tengo el .dll cual es la aplicación host.

También intenté crear un .exe desde 0 que llame el .dll con varios tutoriales que encontré en la web, pero nada.



Muchas gracias a todos de antemano, y felicitaciones por el foro.
Responder Con Cita
  #2  
Antiguo 27-06-2012
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.278
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Hola.
En esta entrada puedes ver la explicación de cómo cargar DLL y BPLs desde Delphi.
En concreto si no quieres revisar todo, en lo que concierne a DLL's, las dos primeras secciones explican cómo cargar una DLL de forma estática y de forma dinámica.
También puedes descargar el código de todos los ejemplos.

En concreto, tienes uno para generar la DLL (sumas.dll) y dos proyectos (call_suma_estat y call_suma_dinam) para que veas cómo se carga la anterior DLL con ambos métodos.

Échale un vistazo al código de los ejemplos y verás que es sencillo.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 27-06-2012
mweltmeister mweltmeister is offline
Registrado
NULL
 
Registrado: jun 2012
Posts: 7
Poder: 0
mweltmeister Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Hola.
En esta entrada puedes ver la explicación de cómo cargar DLL y BPLs desde Delphi[/url].
En concreto si no quieres revisar todo, en lo que concierne a DLL's, las dos primeras secciones explican cómo cargar una DLL de forma estática y de forma dinámica.
También puedes descargar el código de todos los ejemplos[/url].

En concreto, tienes uno para generar la DLL (sumas.dll) y dos proyectos (call_suma_estat y call_suma_dinam) para que veas cómo se carga la anterior DLL con ambos métodos.

Échale un vistazo al código de los ejemplos y verás que es sencillo.

Un saludo.

Hola Netfali! Antes que nada quiero agradecer tu pronta respuesta. Estuve leyendo la información que me facilitaste pero no puedo ejecutar el .dll!!

Estoy trabajando bajo Delphi XE2 y no abre los archivos que están para descargar, supongo porque se hicieron en una versión más antigua de Delphi.

Ahora tengo claro que lo que quiero es crear un .exe + .dll con carga estática. ¡No puedo resolver lo del .exe!
Ya lo tengo compilado, no se ni por donde empezar a crear el .exe sinceramente y no encuentro una explicación que me funcione como hacerlo.
O soy muy torpe o el hecho de que sean las 6:45 de la mañana (acá en Argentina) y que esté desde las 11:00 de la noche intentando hacerlo me dejo atontado; Aunque, no pienso dormir hasta lograrlo.

Ahora sigo intentando, gracias por tu ayuda.
Responder Con Cita
  #4  
Antiguo 27-06-2012
mweltmeister mweltmeister is offline
Registrado
NULL
 
Registrado: jun 2012
Posts: 7
Poder: 0
mweltmeister Va por buen camino
¡Pude abrir uno de los proyectos!
Estoy intentando modificar el código para que me funcione con el .dll pero me da un error al querer compilarlo.
El código que intento compilar es el siguiente; ¿Alguna idea?

Código:
program Call_suma_estat;

uses
  Forms,
  Dialogs,
  SysUtils;

var
  Res:Integer;

function StartHook(x,y:integer):Integer; stdcall; external 'project1.dll';


begin
  // llamada
  Res := StartHook;
  MessageDlg('Iniciando programa.....', mtInformation, [mbOK], 0);

end.
Responder Con Cita
  #5  
Antiguo 27-06-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por mweltmeister Ver Mensaje
me da un error al querer compilarlo.
Deberías poner el mensaje del error
Responder Con Cita
  #6  
Antiguo 27-06-2012
mweltmeister mweltmeister is offline
Registrado
NULL
 
Registrado: jun 2012
Posts: 7
Poder: 0
mweltmeister Va por buen camino
Perdón, se me olvidó. No estoy seguro de cual fue el mensaje del error, pero marcaba en rojo el codigo "Res= 0".

Intenté editarlo a mi manera para que funcionara con el comando que yo quiero y pude compilarlo; El problema es que el .dll no funciona!.
Lo único que hace el .exe al ser ejecutado es mostrar una ventana que dice "Iniciando programa" (como el código muestra).

Adjunto nuevamente el código que pude compilar:
Código:
program start;

uses
  Forms,
  Dialogs,
  SysUtils;

var
  Res:Integer;

function StartHook(x,y:integer):Integer; stdcall; external 'project1.dll';


begin
  // llamada
  Res := 0;
  MessageDlg('Iniciando programa.....', mtInformation, [mbOK], 0);

end.
Ah, y más que nada gracias por la ayuda que me están brindando. Avance más en 10 minutos con su ayuda que en 4 horas de búsqueda y trabajo.
Gracias!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿Cómo crear el ejecutable y un installshield en delphi 2010? Master23 OOP 2 08-03-2010 12:03:02
como crear un ejecutable? fasthorse C++ Builder 7 22-01-2007 12:41:24
¿cómo crear un fichero ejecutable en otro ordenador? elcaracas C++ Builder 2 01-11-2006 04:32:19
¿cómo crear un archivo ejecutable para aplicaciones en java? rls JAVA 11 12-07-2006 17:42:39
Como libero una forma que llame con un show jaaron OOP 6 09-06-2005 19:39:52


La franja horaria es GMT +2. Ahora son las 05:50:35.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi