Imagen

DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.


CARTA PORTE V3.1

ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03


.

CFDLib.dll con C# .Net 4.6.1 error cierra la aplicacion

Este es el foro para resolver dudas y hacer comentarios de las librerias DLL de generacion y timbrado que se ofrece aqui en el foro
Cerrado
Jesus Castelo
Mensajes: 384
Registrado: Lun Feb 14, 2011 6:37 pm

CFDLib.dll con C# .Net 4.6.1 error cierra la aplicacion

Mensaje por Jesus Castelo »

Actualice mis sistemas de la versión .NET Framework 4.0 a la versión .NET Framework 4.6.1

Todos los métodos de la DLL que retornan un TError funcionan sin problema

El problema es solo con los métodos que regresan un string, como ConsultaEstatusSAT() y CFDLibVersion()

Me centre en la mas básica que es CFDLibVersion() y no encuentro cual es el problema. Mi implementación es la siguiente:

Código: Seleccionar todo

        [DllImport("CFDLib.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        private static extern String CFDLibVersion();

        public static string Version()
        {
            return CFDLibVersion();
        }
El comportamiento es que al llegar al llamado a CFDLib.dll la aplicacion simplemente se cierra sin mensaje, sin congelarse, nada, simplemente se cierra. La bitácora no muestra ningún error al ejecutar CFDLibVersion(), y al ejecutar el método ConsultaEstatusSAT() parece que todo esta bien en los procesos de la DLL. El problema es solo al recibir el string de respuesta en .net
07/ene. 11:17:21 ---Iniciando Consulta Estatus CFDI---CFDLib V3.3.181215
07/ene. 11:17:21 Abriendo archivo ini : D:\BCO\Proyectos\CegasFlotillasNet\WinCegas\bin\Release\Reportes\Exportar\ConsultaEstatusSATCFA-48311 e8e0bb3e-41fd-4a86-8c78-b5220c16fe3a.ini
07/ene. 11:17:21 Datos obtenidos del ini : ECO060526FW0|MAMI850817IF6|446.84|A09DD7AB-B6D1-408D-92CD-61574579101E
07/ene. 11:17:22 Resultado de la consulta : ||S - Comprobante obtenido satisfactoriamente.|Cancelable sin aceptación|Cancelado|Cancelado sin aceptación||
07/ene. 11:17:22 ---Fin Consulta Estatus CFDI---
Gracias por su tiempo...
Jesus Castelo
Mensajes: 384
Registrado: Lun Feb 14, 2011 6:37 pm

Re: CFDLib.dll con C# .Net 4.6.1 error cierra la aplicacion

Mensaje por Jesus Castelo »

Solución:

Código: Seleccionar todo

        [DllImport("CFDLib.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        private static extern IntPtr CFDLibVersion();

        [DllImport("CFDLib.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        private static extern IntPtr ConsultaEstatusSAT(string IniFileName);

        string cRespuesta = Marshal.PtrToStringAnsi(ConsultaEstatusSAT(cRutaArchivoINI));

        return Marshal.PtrToStringAnsi(CFDLibVersion());
Fuente:
https://stackoverflow.com/questions/630 ... ease-build
https://docs.microsoft.com/en-us/dotnet ... mework-4.8

Creo que esto también soluciona problemas esporádicos al hacer uso de las funciones que retornan un string. Me pasaba que algunos clientes me reportaban errores pero al intentar reproducirlos no pasaba nada. El problema aquí era por un mal uso de la memoria. En la versión .Net Framework 4.0 pasaba de vez en cuando, en la versión .Net Framework 4.6.1 me pasaba siempre.

Saludos :D
Cerrado