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.WinApi
que 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:
- CTRL+ALT+E
- 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ú.
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 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.