Saltar al contenido

pinvokestackimbalance: ¿cómo puedo solucionarlo o desactivarlo?

No olvides que en las ciencias cualquier problema puede tener varias soluciones, de igual modo enseñaremos lo más óptimo y eficiente.

Solución:

Primero, comprenda que el código está mal (y siempre lo ha estado). El “pInvokeStackImbalance” no es una excepción per se, sino un asistente de depuración administrado. Estaba desactivado de forma predeterminada en VS2008, pero muchas personas no lo activaron, por lo que está activado de forma predeterminada en VS2010. El MDA no se ejecuta en el modo de lanzamiento, por lo que no se activará si compila para el lanzamiento.

En su caso, la convención de llamada es incorrecta. DllImport por defecto a CallingConvention.WinApique es idéntico a CallingConvention.StdCall para código de escritorio x86. Debería ser CallingConvention.Cdecl.

Esto se puede hacer editando la línea [DllImport("ImageOperations.dll")] ser – estar:

[DllImport("ImageOperations.dll", CallingConvention = CallingConvention.Cdecl)]

Para obtener más información, consulte esta referencia de MSDN

Para apagarlo:

  1. CTRL+ALT+E
  2. En “Asistentes de depuración administrados”, desmarque PInvokeStackImbalance.

Es mejor resolver este problema, no es muy difícil, aquí menciono algunos de los métodos, puede ser lo mismo que algunos de mis amigos mencionados anteriormente. Estoy trabajando con PCSC, una aplicación de tarjeta inteligente. Pasé alrededor de una semana, me enojé, hice muchos cambios y finalmente obtuve las soluciones.

Para mí, funciona con la extensión PInvoke que instalé para VS2010, puede descargarla aquí http://www.red-gate.com/products/dotnet-development/pinvoke/

Descárguelo e instálelo, cierre Visual Studio y ábralo de nuevo. Puede encontrar la extensión en la barra de menú.
ingrese la descripción de la imagen aquí

Si el error se debe a que la firma no coincide, simplemente haga clic en PInvoke.net> Insertar PInvoke Signatures

La nueva ventana aparecerá como a continuación
ingrese la descripción de la imagen aquí

Ingrese el nombre del dll y haga clic en buscar. Puede ver todas las funciones de ese dll en la ventana de resultados de búsqueda. Haga clic en la función y obtendrá una firma para esa función en particular.

Use esa firma y necesita modificar sus programas de acuerdo con esa firma, principalmente el tipo de datos.

Esto resuelve mi problema, es posible que tenga un problema diferente, como llamar a la Convención o adicional attributes necesita especificar al importar dll.

Codificación feliz ¡Estate bien!

Agradecemos que quieras secundar nuestra publicación dejando un comentario y dejando una valoración te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *