FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Integración C en Delphi
Hola alguien tiene idea de si esto se puede hacer y como?? Es decir, ¿desde una aplicación Delphi se pueden utilizar funcionalidades implementadas en C? Muchas gracias.
|
#2
|
||||
|
||||
Podrías utilizar DLL's ¿Te serviría eso?
__________________
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. |
#3
|
|||
|
|||
Pues tendría que investigarlo. Te refieres a meter las funcionalidades implementadas en C en una libreria DLL y cargar dicha librería desde mi aplicación Delphi???
Suena interesante, pero tendré que documentarme bastante a cerca de la creación de DLL's y de la posterior integración de una DLL en una aplicación Delphi. Alguna sugerencia??? |
#4
|
||||
|
||||
No lo he hecho nunca (que conste), pero en teoría no debe tener problemas.
Aquí hay expertos en C, a ver si nos dan su opinión. ¡O mejor! a ver si alguno nos crea una DLL con una funcioncilla sencilla (sumar(a,b:Integer), por ejemplo) e intentamos llamarla desde Delphi.
__________________
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. |
#5
|
|||
|
|||
Un ejemplo suma:
La función en la dll escrita en C: Código:
extern "C" __declspec(dllexport) int WINAPI Suma (int a, int b) { return a + b; } Ahora el código Delphi:
Esto vale para variables enteras, float o similares. Pero no para cadenas, ya que hay que mandarlas como Pchar, que es el formato que usa C. Los arrays o estructuras de datos se pueden enviar como punteros. |
#6
|
||||
|
||||
Es la primera vez que pruebo a hacer una dll en C. Espero que este bien
El código de la primera dll (suma.c) es el siguiente: Código:
__declspec(dllexport) int __stdcall Suma(int a, int b) { return a+b; } Código:
g + + -c suma.c dllwrap --def suma.def suma.c -o suma.dll Código:
LIBRARY suma.dll EXPORTS Suma = Suma@8 @1
|
#7
|
||||
|
||||
Y funciona perfectamete, como era de esperar...
__________________
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. |
#8
|
||||
|
||||
Creo recordar que con Delphi se podían enlazar directamente al ejecutable archivos obj de C. Vendría siendo muy similar al uso de la dll pero todo en el mismo ejecutable.
Aquí hay una referencia para delphi 5. Sin embargo parece que si tales obj utlizan otras dlls la cuestión se complica, o al menos eso parece, por lo que dice Rudy Velthuis acá. En fin, sólo quería comentarlo por si fuera una opción. // Saludos |
#9
|
|||
|
|||
Siento no haber podido responder antes. Muchas gracias por las sugerencias, aunque tengo problemas con ellas. Apoyandome en las explicaciones de seoane y basti he conseguido crear suma.dll, pero (gracias a mi inexperiencia con Delphi) no soy capaz de llamarla desde un pequeño programita. Os adjunto el .pas
El compilador me dice que Suma no está declarado, por lo que asumo que no está cogiendo la dll, ¿me equivoco? |
#10
|
||||
|
||||
Cita:
Por cierto, no entiendo para que usas esto: Basti te lo ponía como un ejemplo, pero no hace falta que lo incluyas en tu programa |
#11
|
|||
|
|||
Cita:
yo pensaba que se estaba llamando a la funcion implementada en C, pero por lo que veo, con la declaración se supone que ya queda implícito, es decir, la función Suma2 ¿no necesita implementación? puesto que está implementada en suma.dll, ¿no? |
#12
|
||||
|
||||
Exactamente , al declararla le estamos diciendo al compilador como es, donde esta, y con que nombre queremos llamarla, pero nada mas, la implementación ya esta dentro de la dll.
|
#13
|
|||
|
|||
Ok, perfecto (ya me funciona). Muchas gracias. Lo había entendido mal.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Integración de php y delphi | Will | PHP | 4 | 10-08-2006 23:13:48 |
Integración Google earth | Luci | Internet | 5 | 21-11-2005 15:14:35 |
Integración de datos | kalimero | Firebird e Interbase | 3 | 17-02-2005 22:03:38 |
Integracion de una Aplicacion de Flash 5.0, a una forma en Delphi 6... | delphi_gama | Gráficos | 2 | 22-08-2003 00:41:17 |
integracion de Hardware y sofware | beatrizmh | Conexión con bases de datos | 1 | 17-08-2003 09:25:28 |
|