Używam programu Microsoft Visual Studio 2011 Professional Beta
Próbuję uruchomić pliki OpenCV C ++ ( http://opencv.willowgarage.com/wiki/Welcome ), które skompilowałem przy użyciu cMake i Visual Studio Complier.
Jednak kiedy idę do debugowania projektu, otrzymuję ponad 600 błędów, z których większość to:
błąd LNK2026: moduł niebezpieczny dla obrazu SAFESEH.
Najwyraźniej te pliki znajdują się w projekcie opencv_ffmpeg, ale nie mogłem ich znaleźć. Zajrzałem na stronę Safe Exception Handlers na stronie pomocy Microsoft, ale nie mogłem znaleźć żadnych ostatecznych odpowiedzi.
Zastanawiałem się, czy ktoś inny miał ten problem i czy udało mu się go naprawić.
c++
visual-studio
visual-c++
Aaron Thompson
źródło
źródło
Odpowiedzi:
Z komentarzy:
źródło
Pomogło mi wyłączenie opcji „Obraz ma bezpieczną obsługę wyjątków” we właściwościach projektu -> Właściwości konfiguracyjne -> Konsolidator -> karta Zaawansowane.
źródło
Jeśli masz ten błąd podczas tworzenia ZLIB w programie Visual Studio, oto rozwiązanie. Poszukaj
contrib\masmx86\bld_ml32.bat
i dodaj/safeseh
jako opcjęPrzed
ml /coff /Zi /c /Flmatch686.lst match686.asm ml /coff /Zi /c /Flinffas32.lst inffas32.asm
Po
ml /safeseh /coff /Zi /c /Flmatch686.lst match686.asm ml /safeseh /coff /Zi /c /Flinffas32.lst inffas32.asm
źródło
.asm
zamiast tego musiałem zmienić właściwości plików w eksploratorze rozwiązań.Innym sposobem jest dodanie jakiegoś handlera SEH (na przykład pustego) do plików asm i skompilowanie ich z
/safeseh
opcją, a następnie skompilowanie innego kodu normalnie z/SAFESEH:YES
opcją kompilatora.Pusta obsługa SEH:
źródło
/safeseh
wydaje się , że wystarczy. To naprawdę powinno być pochwalone!Twój przebieg może się różnić, ale żadna z powyższych sugestii nie zadziałała (chociaż nie próbowałem używać własnego programu obsługi wyjątków ASM).
Co zadziałało, to wybranie celu kompilacji Release / x64.
Używam systemu Windows 10 na komputerze 64-bitowym i używam programu Visual Studio 2015.
Docelowa wersja Release / Win32 też działa. Myślę, że najważniejsze jest wybranie „Release”.
źródło