模块SAFESEH图像C ++不安全
我正在使用Microsoft Visual Studio 2011专业版testing版
我试图运行使用cMake和Visual Studio编译器编译的OpenCV C ++文件( http://opencv.willowgarage.com/wiki/Welcome )。
但是当我去debugging项目时,我得到了600多个错误,其中大部分是:
错误LNK2026:SAFESEH图像模块不安全。
显然这些文件在opencv_ffmpeg项目中,但是我找不到它们,我看了一下Microsoft帮助页上的safeseh Safe Exception Handlers页面,但是找不到任何明确的答案。
我想知道是否有其他人有这个问题,如果他们设法解决这个问题。
来自评论:
当链接包含由编译器早期版本创build的代码的.obj或.lib时,会发生这种情况。 如果您下载了opencv_ffmpeg的二进制文件而不是源文件,那么这当然是常见的。 你可以closures链接器选项,但是你仍然会有一个CRT版本不兼容的字节。 从源重build库。 – Hans Passant 5月15日13:01
感谢您的帮助,它的工作 – 亚伦汤普森5月17日14:50
在项目属性 – >configuration属性 – >链接器 – >高级选项卡中禁用选项“图像有安全exception处理程序”帮助我。
其他方法是将一些SEH处理程序(例如空)添加到asm文件中,并使用/safeseh
选项编译它们,然后使用/SAFESEH:YES
编译器选项正常编译其他代码。
空SEH处理程序:
.safeseh SEH_handler SEH_handler proc ;handler ret SEH_handler endp
你的里程可能会有所不同,但上述build议没有为我工作(虽然我没有尝试滚动我自己的exception处理程序)。
做了什么工作就是select构build目标Release / x64。
我在64位机器上运行Windows 10,并使用Visual Studio 2015。
目标版本/ Win32也适用。 我想最主要的是select“释放”。