x64 visual studio microsoft descargar c++ visual-studio visual-c++

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