Generar la FEA o FIEL con la biblioteca sgenc32.dll

667 views
Skip to first unread message

Antonio.xt

unread,
Nov 24, 2011, 6:13:36 PM11/24/11
to vfp-factura-electronica-mexico
Buen dia grupo, solicito apoyo ya que tengo la tarea de generar la
Firma Electronica Avanzada para firmar unos archivos de validacion.

Ya baje de la pagina del SAT la bilbioteca sgenc32.dll y segun el
manual que lo acompaña se debe ubicar en la carpeta del sistema.

Ya tengo la libreria sgenc32.dll en la carpeta del sistema, y en en el
metodo click de un boton tengo el siguiente codigo:

**************************
DECLARE integer GeneraFirmaDigitalG IN sgenc32.dll string
pArchivoOrig, int pTipoDocumento, array pArr_curps

archivoOrig = '{ Archivo a firmar }'
tipoDocumento = 0
DIMENSION arr_curps[4]
arr_curps(1) = ' {CURP de la empresa} '
arr_curps(2) = ' { archivo.key} '
arr_curps(3) = ' { archivo.cer} '
arr_curps(4) = ' {password} '

nRes = GeneraFirmaDigitalG(archivoOrig, tipoDocumento, arr_CURPS) ;
**************************

Y cuando lo ejecuto al llegar a esta ultima linea de codigo me marca
el siguiente error:
- No se puede encontrar el punto de entrada GeneraFirmaDigitalG en la
DLL. -

Agradezco, si pudieran hecharme una mano.

Antonio Moreno
VFP 7 - Win 7 Prof

Victor Espina

unread,
Nov 24, 2011, 7:31:36 PM11/24/11
to vfp-factura-ele...@googlegroups.com
Asegurate que estas escribiendo el nombre de la funcion TAL CUAL esta declarada en la DLL, incluyendo mayusculas y minusculas. 

Saludos

Victor Espina

Antonio.xt

unread,
Nov 25, 2011, 11:22:21 AM11/25/11
to vfp-factura-electronica-mexico

Gracias Victor, sabes, si esta escrita tal cual con mayusculas y
minusculas de hecho la copie del manual que acompaña a la DLL.

Segun el documento que acompaña a la DLL dice lo siguiente:

*****************************************************
En términos generales para firmar un archivo se debe:
1) Llamar a la función BuscaCurpsG() o BuscaCurpsG_STD() para que
devuelva las CURPS encontradas dentro del archivo.

2) Asignar los valores correspondientes para:
CURPS[].archivokey
CURPS[].archivocer
CURPS[].password

3) Llamar a la función GeneraFirmaDigitalG() o
GeneraFirmaDigitalG()_STD para que se firmen los pedimentos o
documentos con los datos proporcionados.
**************************************************

Y la sintaxis que describe es la siguiente

int GeneraFirmaDigitalG(char *archivoOrig, int tipoDocumento,
SAFEARRAY **arr_CURPS)
**********
Ya tengo el archivoOrig y el tipoDocumento, el arreglo arr_CURPS lo
creo antes de llamar a la funcion, aunque no se si sea esta la forma
correcta.

Saludos...

Victor Espina

unread,
Nov 25, 2011, 11:31:57 AM11/25/11
to vfp-factura-ele...@googlegroups.com
Es que ni siquieras has llegado al punto de ver si los parametros son correctos; el error que obtienes es que no se encuentra la funcion indicada en la libreria.  Normalmente esto se debe a que el nombre usado en el DECLARE no corresponde al nombre de la funcion dentro del DLL.

La otra razon es que hayas copiado la DLL donde no va. Si la copiate en System32 prueba a copiarla en System; si la copiaste en System, prueba a copiarla en System32. Si no te funciona en ninguno de los dos sitios, prueba a copiarla en la carpeta principal de tu programa.

Finalmente, si estas usando un windows de 64bits, recuerda copiar el DLL en c:\windows\syswow64, ya que al tratarse de una dll de 32 bits, es ahi donde debe copiarse.

Saludos

Victor Espina
Reply all
Reply to author
Forward
0 new messages