| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
kyo Invitado
|
Publicado: Mie 15 Jun, 2005 7:33 pm Asunto: Variables globales en DLLs |
|
|
Hola a todos,
tengo problemas para definir/modificar valores a variables globales en dlls. Uso un namespace para una funcion comun de inicializacion para cada dll que tengo:
| Código: |
namespace ZQuery
{
static AnsiString sSGBD = "";
extern "C" void _stdcall zDLLInit(char * szSGDB)
{
sSGBD = AnsiString(szSGDB);
}
}
|
En la aplicacion llamo a zDLLInit para asignar el tipo de BBDD a usar:
| Código: |
ZQuery::zDLLInit("ORACLE");
|
pero no se copia en la variable global de la dll
¿Alguien sabe a que se debe? |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Vie 24 Jun, 2005 8:20 am Asunto: |
|
|
Hola kyo:
En la DLL he puesto lo siguiente:
| Código: | namespace ZQuery
{
static AnsiString sSGBD = "";
extern "C" void __export __stdcall zDLLInit(char * szSGDB)
{
sSGBD = AnsiString(szSGDB);
}
extern "C" void __export __stdcall MostrarVariable(void)
{
ShowMessage(sSGBD);
}
} |
Y luego en el programa he añadido el .lib generado y las siguientes declaraciones. Luego he llamado a las funciones y la variable global funciona correctamente:
| Código: | namespace ZQuery
{
extern "C" {
void __import __stdcall zDLLInit(char * szSGDB);
void __import __stdcall MostrarVariable(void);
}
} |
Si esto es lo que estas haciendo, y sin más detalles no se me ocurre porque no te funciona. A menos que estes llamando a la DLL desde dos procesos diferentes... |
|
| Volver arriba |
|
 |
|