模块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“释放”。