Imagen

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


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
Jesus Castelo
Mensajes: 384
Registrado: Lun Feb 14, 2011 6:37 pm

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

Mensajepor Jesus Castelo » Mar Ene 07, 2020 12:15 pm

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

Mensajepor Jesus Castelo » Mié Ene 08, 2020 11:03 am

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/6300093/why-cant-i-return-a-char-string-from-c-to-c-sharp-in-a-release-build
https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.marshal.ptrtostringansi?view=netframework-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


Volver a “SOPORTE LIBRERIA CFDLib.dll, CELib.dll y RETLib.dll”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 11 invitados