usar como c# c++ pinvoke

como - dllimport c#



¿Hay alguna manera de depurar el dll c++ llamado desde C#DllImport? (3)

Al adjuntar, cambie el valor "Adjuntar a" a "Nativo". El proceso no debe ejecutarse bajo el depurador de código administrado; en lugar de "Depurar", use el comando "Ejecutar" para comenzar.

Además, la DLL debe compilarse con información de depuración para que se lleve a cabo cualquier depuración sensible. Asegúrate de que no estás invocando la versión de lanzamiento.

Sin embargo, OutputDebugString () debería funcionar independientemente del modo de depuración.

Me pregunto si hay alguna forma de depurar c ++ dll llamado desde C # PInvoke en VS 2010. Intenté adjuntar el proyecto a la aplicación c # pero no funcionó, no se detuvo en un punto de interrupción.

También traté de grabar cualquier cosa con OutputDebugString en el proyecto C ++ pero nada se imprimió con la llamada PInvoke. A pesar de estos problemas, la función real funciona bien.

Cualquier consejo será apreciado.


Ambos requieren activar la misma opción: Proyecto> Propiedades> pestaña Depurar> marcar la opción "Habilitar depuración de código no administrado".

Ahora puede establecer un punto de interrupción en el código DLL nativo, se convertirá de vacío a sólido tan pronto como el proyecto C # cargue la DLL. Y el resultado de OutputDebugString () irá a la ventana de resultados gracias al motor de depuración no administrado que se está utilizando.


Si ejecuta un depurador de C ++ mientras su programa se está ejecutando, y luego vaya a Depurar-> Adjuntar al proceso-> Encuentre su proceso y adjúntelo. Deberías poder depurarlo.

Asegúrese de que ha compilado su DLL con los símbolos del depurador. (.pdb) y que están en el directorio desde donde ejecutas las cosas.