Página 1 de 1

Problemas con un dll en windows 7 de 64bits

Publicado: Mar Abr 09, 2013 2:44 pm
por Christian
Hola estoy teniendo un problema con un codigo en C cuando utilizo un
programa para imprimir comprobantes fiscal en una impresora HASAR y con
un windows 7 de 64bits para ello uso la dll winfis32.dll. Hasta donde
puse analizar la colgada se produce en:
HB_FUNC( MANDAPAQUETE )
{
int nHandler = hb_parni( 1 );
int result = -2000;
LPTSTR pMensaje = hb_parc( 2 );
char buff[256];
HINSTANCE hInst;
puntMANDAPAQ lpAddr;
hInst=GetModuleHandle("WinFis32.dll");
if(hInst==NULL)
{
hInst=HB_LoadDll("WinFis32.dll");
}
lpAddr=(puntMANDAPAQ)GetProcAddress(hInst,"MandaPaqueteFiscal ");
if(lpAddr==NULL)
{
lpAddr=(puntMANDAPAQ)GetProcAddress(hInst,buff);
}
if (lpAddr)
{
result = (int)(lpAddr)(nHandler,pMensaje);
}
hb_retni(result);
}
Ya se q no es un problema de Xailer, pero alguien tuvo un problema
similar y me podria orientar. Gracias.
Saludos

Problemas con un dll en windows 7 de 64bits

Publicado: Mié Abr 10, 2013 12:00 pm
por jfgimenez
Christian,
> Hola estoy teniendo un problema con un codigo en C cuando utilizo un
> programa para imprimir comprobantes fiscal en una impresora HASAR y
> con un windows 7 de 64bits para ello uso la dll winfis32.dll. Hasta
> donde puse analizar la colgada se produce en:
>
> HB_FUNC( MANDAPAQUETE )
> {
> int nHandler = hb_parni( 1 );
> int result = -2000;
> LPTSTR pMensaje = hb_parc( 2 );
> char buff[256];
> HINSTANCE hInst;
> puntMANDAPAQ lpAddr;
>
> hInst=GetModuleHandle("WinFis32.dll");
> if(hInst==NULL)
> {
> hInst=HB_LoadDll("WinFis32.dll");
> }
> lpAddr=(puntMANDAPAQ)GetProcAddress(hInst,"MandaPaqueteFiscal ");
> if(lpAddr==NULL)
> {
> lpAddr=(puntMANDAPAQ)GetProcAddress(hInst,buff);
> }
> if (lpAddr)
> {
> result = (int)(lpAddr)(nHandler,pMensaje);
> }
> hb_retni(result);
> }
>
> Ya se q no es un problema de Xailer, pero alguien tuvo un problema
> similar y me podria orientar. Gracias.
Aparentemente, la rutina está bien. Sólo hay un detalle con la carga de
la dll, que estás usando hb_loadDll() y serí­a mejor usar la función del
API de widows LoadLibrary() directamente. Por otro lado, parece que no
se descarga nunca, pero eso no provoca ningún problema en esta rutina,
ya que las sucesivas llamadas ya no la abren de nuevo, y windows se
encargará de cerrarla cuando salgas del programa.
Por lo demás, es posible que el problema esté en la propia DLL, que no
esté preparada para 64 bits o que tenga algún problema especí­fico.
Deberí­as contactar con el fabricante para ver si tiene una versión más
reciente y que te confirme si funciona o no en 64 bits.
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info

Problemas con un dll en windows 7 de 64bits

Publicado: Mié Abr 10, 2013 1:04 pm
por emeasoft
José,
Estamos utilizando HB_LibLoad.
LoadLibrary acusa o erro:

Saludos!
Mário Angelini

Attached files

Problemas con un dll en windows 7 de 64bits

Publicado: Mié Abr 10, 2013 3:15 pm
por emeasoft
José, desculpa:
Se utilizar DLL de terceiros LoadLibrary funciona correto
com:
hb_dynCall( { "func...", nHandle,DC_CALL_STD})
Se for DLL compilada com Harbour temos que usar:
HB_LibLoad
Saludos.
Mário Angelini

Problemas con un dll en windows 7 de 64bits

Publicado: Vie Abr 12, 2013 2:02 pm
por Christian
Muchas gracias a todos, ayer consegui una winfis32.dll del año 2008 y la
probe con mi notebook con win8 de 64 bits y me funciona bien igual voy a
probar la modificacion que me dice jose LoadLibrary().
El 10/04/2013 10:15 a.m., www[dot]eMeAsOfT[dot]com escribió:
> José, desculpa:
>
> Se utilizar DLL de terceiros LoadLibrary funciona correto
> com:
> hb_dynCall( { "func...", nHandle,DC_CALL_STD})
> Se for DLL compilada com Harbour temos que usar:
> HB_LibLoad
>
> Saludos.
> Mário Angelini
>

Problemas con un dll en windows 7 de 64bits

Publicado: Lun Abr 15, 2013 4:30 pm
por Christian
Muchas Gracias con la dll y la funcion LoadLibrary funciono muy bien.
Saludos
El 12/04/2013 09:02 a.m., Christian R.Assenza escribió:
> Muchas gracias a todos, ayer consegui una winfis32.dll del año 2008 y la
> probe con mi notebook con win8 de 64 bits y me funciona bien igual voy a
> probar la modificacion que me dice jose LoadLibrary().
>
> El 10/04/2013 10:15 a.m., www[dot]eMeAsOfT[dot]com escribió:
>> José, desculpa:
>>
>> Se utilizar DLL de terceiros LoadLibrary funciona correto
>> com:
>> hb_dynCall( { "func...", nHandle,DC_CALL_STD})
>> Se for DLL compilada com Harbour temos que usar:
>> HB_LibLoad
>>
>> Saludos.
>> Mário Angelini
>>
>