Pregunta

Tengo algunos problemas con uno de los proyectos que estoy trabajando en Windows (64 bits). El programa veces accidente, a veces no lo hace, y sospecho que el problema se vincula con múltiples tiempo de ejecución C vinculado. ¿Cómo puedo detectar esto en Windows? Probé con depends.exe, pero no informó de la CRT

¿Fue útil?

Solución

Es poco probable que con éxito podría enlazar estáticamente contra múltiples bibliotecas de tiempo de ejecución C - siempre se encontraría con muchos conflictos de definición de símbolos que al menos producir advertencias voluminosos, y sólo un ingeniero sería imprudente ignorar ellos

.

Con depends, me aseguraría de utilizar la opción de perfiles dinámicos, para comprobar todas las dependencias de CRTLs dinámicas que se carguen. Si no aparece nada, sospecho que el problema está en otra parte.

Me sospecha que su problema es en cualquier caso en otros lugares, sin embargo, como DLL con las API de nivel C no debe, por regla general, se basan en estado compartido en el CRTL - por lo general el asignador de memoria - y debe tener adoptar una protocolo estandarizado para la gestión de memoria-API cruz, tal como Caller-asigna, destinatario de la llamada usos, o que pasa en devoluciones de llamada de asignación de memoria, etc. en otras palabras, múltiples CRTLs en el mismo proceso no es normalmente un problema debido al uso correcto de una memoria protocolo de gestión.

Para fallos transitorios, sospecharía la corrupción multihilo o montón.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top