microsoft - visual studio 2017 c++
módulo inseguro para SAFESEH image C++ (5)
De los comentarios:
Esto sucede cuando vincula un .obj o .lib que contiene código creado por una versión anterior del compilador. Lo que por supuesto sería común si descargara un archivo binario para opencv_ffmpeg en lugar de la fuente. Puede desactivar la opción de engarce pero aún tendrá una incompatibilidad de versión CRT que puede bytear. Reconstruye la biblioteca desde la fuente. - Hans Passant 15 de mayo a las 13:01
Gracias por la ayuda, funcionó - Aaron Thompson 17 de mayo a las 14:50
Estoy usando Microsoft Visual Studio 2011 Professional Beta
Estoy intentando ejecutar los archivos OpenCV C ++ ( http://opencv.willowgarage.com/wiki/Welcome ) que he compilado usando cMake y el Visual Studio Complier.
Sin embargo, cuando voy a depurar el proyecto, recibo más de 600 errores, la mayoría de ellos son:
error LNK2026: módulo inseguro para la imagen SAFESEH.
Aparentemente, estos archivos están en el proyecto opencv_ffmpeg pero no pude encontrarlos. He echado un vistazo a la página Safeseh Safe Exception Handlers en la página de ayuda de Microsoft, pero no he podido encontrar ninguna respuesta definitiva.
Me preguntaba si alguien más tuvo este problema y si lograron solucionarlo.
La opción de desactivar "La imagen tiene controladores de excepciones seguros" en Propiedades del proyecto -> Propiedades de configuración -> Enlazador -> pestaña Avanzado me ayudó.
Si obtienes este error al compilar ZLIB en Visual Studio, aquí está la solución. Busque contrib/masmx86/bld_ml32.bat
y agregue /safeseh
como una opción
antes de
ml /coff /Zi /c /Flmatch686.lst match686.asm
ml /coff /Zi /c /Flinffas32.lst inffas32.asm
Después
ml /safeseh /coff /Zi /c /Flmatch686.lst match686.asm
ml /safeseh /coff /Zi /c /Flinffas32.lst inffas32.asm
Su kilometraje puede variar, pero ninguna de las sugerencias anteriores funcionó para mí (aunque no intenté rodar mi propio controlador de excepción de ASM).
Lo que sí funcionó fue seleccionar el objetivo de compilación Release / x64.
Estoy ejecutando Windows 10 en una máquina de 64 bits y usando Visual Studio 2015.
El objetivo Release / Win32 también funciona. Supongo que lo principal es elegir "Liberar".
Otra forma es agregar algunos manejadores SEH (vacíos por ejemplo) a los archivos asm y compilarlos con la opción /safeseh
, luego compilar otro código normalmente con /SAFESEH:YES
compilador opción.
Manejador SEH vacío:
.safeseh SEH_handler
SEH_handler proc
;handler
ret
SEH_handler endp