Uso de dll externa en Delphi
Hola amigos, estoy adentrándome en territorio nuevo y espero puedan ayudarme.
Estoy realizando un proyecto Delphi, para el que necesito usar una dll hecha para C/C++ o Visual Basic 6, en la documentación de la dll no viene la forma de implementar en Delphi(no es sorpresa) ni describe los comandos dentro de ella como para hacer el típico procedimiento de:
Es la primera vez que voy a trabajar con dll's y ciertamente no se usar C++, se que la información va de casi a totalmente nula, pero alguno tiene alguna referencia de como trabajar dicha dll (o en general cualquier dll hecha en un lenguaje externo a Delphi). Adjunto un poco del código que viene en la documentación de la dll: Código:
|
Cita:
Cita:
Primero debes tener definida la cabecera de la función a la que vas a llamar.
Como la cabecera necesita unos tipos "específicos" denerás tenerlos definidos en tu unidad (.PAS), así que debes "covertir" los tipos que ya te dan a Delphi. En tu caso, por ejemplo, el tipo: Código:
struct SSP_COMMAND {
Algo similar debes hacer con el resto. |
Los otros tipos podrían ser algo así:
|
Supongo que si alguien más quiere mirar el tema, este documento le podría servir de ayuda.
http://www.marrginal.ru/files/cashma...ide%20v2.2.pdf Si tienes algun otro link, estaría bien que lo añadieras. |
Antes que nada gracias por tomarte el tiempo de ver el tema y responder.
Comenzaré como dices con los encabezados del las funciones principales en el documento y de ahí me iré adentrando más en el tema, probando si lo que hago es correcto, tengo entendido que una vez logrando dicha instrucción ya sólo debo mandar llamar el método que me retornó el GetProcAddress y mandando como parámetos los tipos declarados con anterioridad. Cualquier cosa estaré reportándome de nuevo. Gracias. |
Cita:
Hola de nuevo, tengo algunas dudas más específicas acerca de este tema: Tengo entendido que hay dos formas de usar las funciones dentro de la DLL(estática y dinámica), cuando intento llevar a cabo las siguientes lineas de C++ usando el dinámico tengo algo así: Codigo de C++ a replicar(no tal cual, sólo lo que ocupo): Código:
HINSTANCE hInst = LoadLibrary("ITLSSPProc.dll");
Pero aqui hay dos cosas, si en la línea de la duda pogo el @(que tengo entendido que es como usar un apuntador, pero no se) al evaluarlo me da nil (cosa que no debería pasar si funciona bien la linea del GetProcAddess), si le quito el arroba ni siquiera compila y me arroja el mensaje "Not enough actual parameters" que si no me equivoco es por que está intentando ejecutar la función(Cosa que no trato de hacer, yo sólo quiero saber si el GetProcAddess funcionó). ¿Saben que estoy haciendo mal o cual sería forma correcta de hacer el GetProcAddress? El código completo es:
He intentado con diferentes combinaciones(estáticas y dinámicas) pero no funciona, ahora estoy tratando de apegarme lo más posible a la forma C++ que coloqué. ¿Alguna idea? Si requieren el código y archivos que estoy tratando de usar se los puedo enviar por e-mail |
La franja horaria es GMT +2. Ahora son las 05:27:52. |
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