Skip to main content

FFMpeg 在 Visual Studio 2015  中使用时碰到的 SAFESEH 问题

技术
Author

cookwhy

Published

June 15, 2016

FFMpeg 2.8 在 Visual Studio 2015 下使用时,提示了如下错误:

模块对于 SAFESEH 映像是不安全的。

错误详细信息如下:

    <span style="color: #010101;font-family: 'Segoe UI';font-size: xx-small">严重性</span>
  </div>
</td>

<td align="left" valign="middle" width="51" height="17">
  <div align="left">
    <span style="color: #010101;font-family: 'Segoe UI';font-size: xx-small">代码</span>
  </div>
</td>

<td align="left" valign="middle" width="109" height="17">
  <div align="left">
    <span style="color: #010101;font-family: 'Segoe UI';font-size: xx-small">说明</span>
  </div>
</td>

<td align="left" valign="middle" width="75" height="17">
  <div align="left">
    <span style="color: #010101;font-family: 'Segoe UI';font-size: xx-small">项目</span>
  </div>
</td>

<td align="left" valign="middle" width="503" height="17">
  <div align="left">
    <span style="color: #010101;font-family: 'Segoe UI';font-size: xx-small">文件</span>
  </div>
</td>

<td align="left" valign="middle" width="18" height="17">
  <div align="left">
    <span style="color: #010101;font-family: 'Segoe UI';font-size: xx-small">行</span>
  </div>
</td>

<td align="left" valign="middle" width="83" height="17">
  <div align="left">
    <span style="color: #010101;font-family: 'Segoe UI';font-size: xx-small">禁止显示状态</span>
  </div>
</td>
    <span style="color: #010101;font-family: 'Segoe UI';font-size: xx-small">错误</span>
  </div>
</td>

<td align="left" valign="middle" width="51" height="32">
  <div align="left">
    <span style="color: #010101;font-family: 'Segoe UI';font-size: xx-small">LNK2026</span>
  </div>
</td>

<td align="left" valign="middle" width="109" height="32">
  <div align="left">
    <span style="color: #010101;font-family: 'Segoe UI';font-size: xx-small">模块对于 SAFESEH 映像是不安全的。</span>
  </div>
</td>

<td align="left" valign="middle" width="75" height="32">
  <div align="left">
    <span style="color: #010101;font-family: 'Segoe UI';font-size: xx-small">MetaEncoder</span>
  </div>
</td>

<td align="left" valign="middle" width="503" height="32">
  <div align="left">
    <span style="color: #010101;font-family: 'Segoe UI';font-size: xx-small">E:\liumangxuxu\code\30kernel\VideoClipper\shadow\MetaEncoder\swscale.lib(dixcbs00009.o)</span>
  </div>
</td>

<td align="left" valign="middle" width="18" height="32">
  <div align="left">
    <span style="color: #010101;font-family: 'Segoe UI';font-size: xx-small">1</span>
  </div>
</td>

<td align="left" valign="middle" width="83" height="32">
</td>

可以把 SAFESEH 这个选项关掉:

图像 1

把这个SAFESEH关掉。

说明:这个是 Visual Studio 2015 里引入的一个新东西,一般来说,旧版本的 Visual Studio 创建的库,在 2015 里要链接起来的时候,就会提示类似的问题。

如果是使用 cmake 来生成工程时,需要关闭 SAFESEH 这个选项,可以直接使用下面的代码:

<blockquote>
  <div>
    IF(${_MACHINE_ARCH_FLAG} MATCHES X86)
  </div>
  
  <div>
      SET (CMAKE_EXE_LINKER_FLAGS &#8220;${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO&#8221;)
  </div>
  
  <div>
      SET (CMAKE_SHARED_LINKER_FLAGS &#8220;${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO&#8221;)
  </div>
  
  <div>
      SET (CMAKE_MODULE_LINKER_FLAGS &#8220;${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH:NO&#8221;)
  </div>
  
  <div>
    ENDIF()
  </div>
</blockquote>