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 

Para _Leo

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

utilizando el codigo de un ejemplo que diste de como crear una dll y enlazarla estaticamente, aproveche la dll pero intente hacerlo de forma dinamica, viendo como se hacia en el caso de la creación del alias ODBC, pero no consigo que funcione. Te importaría dar el código para el enlace de la función sumar de forma dinamica para ver donde he metido mi patita.

Gracias

Jose Arcos

Volver arriba
Mensaje    Asunto: Para _Leo Responder citando

Hola de nuevo JF:

Tal como se crea la dll del mensaje:
http://212.163.180.66/ubb/Forum1/HTML/000230.html

para acceder a ella dinámicamente hacemos lo siguiente:

 void LlamarASuma(void)
 {
     typedef int (__stdcall *pSuma)(int, int);
     pSuma Suma;
     HINSTANCE hLib = LoadLibrary("dll.dll");
     if (hLib)
     {
         Suma = (pSuma) GetProcAddress(hLib, "@Suma$qii");
         if (Suma)
             ShowMessage( Suma(2,3) );
         FreeLibrary(hLib);
     }
 }


En este caso usamos "@Suma$qii" porque es el nombre con que se exporta la función, ya que C++ "decora" la función con símbolos según sus parámetros. Para exportar la función sin esos símbolos podríamos usar:

extern "C" PUBLIC int Suma(int a, int b);

en el .h de la dll. Entonces se exportaría como "_Suma" ya que C a diferencia de C++ solo añade el _ al principio de las funciones... bueno, que para el caso da igual, lo que nos interesa es poder averiguar con que nombre se exporta la función que nos interese y para ello podemos usar el comando TDUMP.EXE del siguiente modo:

tdump -ee dll.dll

esto nos da una lista de todas las funciones exportadas con su nombre exacto.

Volver arriba
Mensaje    Asunto: Para _Leo Responder citando

Un millón de gracias porque ya no sabía como iba a probar para que me cargará la función y no me diera NULL. No la declare como extern y claro, eso de la decoración lo desconocía. De nuevo muchísimas gracias
Volver arriba
Mensaje    Asunto: liga rota :( Responder citando

Hola saludos a todos!!!

Deseo agregar una dll a mi proyecto pero no se como se hace Embarassed busque en el foro y encontre esto de un mensaje de _Leo:

Cita:
Tal como se crea la dll del mensaje:
http://212.163.180.66/ubb/Forum1/HTML/000230.html


pero la liga no funciona Crying or Very sad

si alguien me pudiera dar alguna idea de como crear una dll se lo agradecería mucho
Volver arriba
Mensaje    Asunto: Responder citando

https://cppbuilder.es/viewtopic.php?t=230
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Uso la version 5 de borland builder c++ y probe este ejemplo para la carga dinamica de una dll y no me funciona !!! por que puede ser ???
el resultado de Suma = (pSuma) GetProcAddress(hLib, "@Suma$qii"); siempre es NULL...
Cuando hago TDUMP -ee project1.dll me devuelve esactamente esto:

EXPORT ord:0003='__linkproc__ Unit2::Finalize'
EXPORT ord:0002='__linkproc__ Unit2::Initialize'
EXPORT ord:0001='__stdcall Suma(int, int)'
EXPORT ord:0005='_Form2'
EXPORT ord:0004='___CPPdebugHook'

Lo que no veo en ningun lado es por ejemplo: @Suma$qii

cualquier ayuda sera bienvenida !!! Saludos
_________________
Il Lupo
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
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.