J'utilise la version bêta de Microsoft Visual Studio 2011 Professional
J'essaie d'exécuter les fichiers OpenCV C++ ( http://opencv.willowgargarage.com/wiki/Welcome ) que j'ai compilés à l'aide de cMake & Visual Studio Complier.
Cependant, lorsque je vais déboguer le projet, je reçois plus de 600 erreurs, la plupart d'entre elles étant:
erreur LNK2026: module non sécurisé pour l'image SAFESEH.
Apparemment, ces fichiers font partie du projet opencv_ffmpeg mais je n’ai pas pu les trouver. J’ai jeté un coup d’œil à la page safeseh Safe Exception Handlers de la page d’aide de Microsoft mais je n’ai trouvé aucune réponse définitive.
Je me demandais si quelqu'un d'autre avait eu ce problème et s'il avait réussi à le résoudre.
D'après les commentaires:
Cela se produit lorsque vous liez un fichier .obj ou .lib contenant du code créé par une version antérieure du compilateur. Ce qui bien sûr serait courant si vous téléchargiez un binaire pour opencv_ffmpeg au lieu de la source. Vous pouvez désactiver l'option de l'éditeur de liens, mais vous aurez toujours une incompatibilité de version CRT pouvant octroyer. Reconstruisez la bibliothèque à partir du source. - Hans Passant le 15 mai à 13h01
Merci pour l'aide, cela a fonctionné - Aaron Thompson 17 mai à 14h50
La désactivation de l’option "L’image présente des gestionnaires d’exception fiables" dans les propriétés du projet -> Propriétés de configuration -> lieur -> onglet Avancé m’a aidé.
Une autre méthode consiste à ajouter un gestionnaire SEH (vide, par exemple) aux fichiers asm et à les compiler avec l'option /safeseh
, puis à compiler un autre code normalement avec l'option /SAFESEH:YES
du compilateur.
Gestionnaire de SEH vide:
.safeseh SEH_handler
SEH_handler proc
;handler
ret
SEH_handler endp
Si vous rencontrez cette erreur lors de la construction de ZLIB dans Visual Studio, voici la solution. Recherchez contrib\masmx86\bld_ml32.bat
et ajoutez /safeseh
en option
Avant
ml /coff /Zi /c /Flmatch686.lst match686.asm
ml /coff /Zi /c /Flinffas32.lst inffas32.asm
Après
ml /safeseh /coff /Zi /c /Flmatch686.lst match686.asm
ml /safeseh /coff /Zi /c /Flinffas32.lst inffas32.asm
Votre kilométrage peut varier, mais aucune des suggestions ci-dessus ne fonctionne pour moi (bien que je n’ai pas essayé de faire rouler mon propre gestionnaire d’exception asm).
Qu'est-ce qui a fonctionné a été de sélectionner la version cible/x64 de build.
J'utilise Windows 10 sur un ordinateur 64 bits et j'utilise Visual Studio 2015.
La version cible/Win32 fonctionne également. Je suppose que l'essentiel est de choisir "Libérer".