错误 lnk2026:模块对 safeseh 图像不安全

Posted

技术标签:

【中文标题】错误 lnk2026:模块对 safeseh 图像不安全【英文标题】:Error lnk2026: module unsafe for safeseh image 【发布时间】:2013-01-20 13:25:51 【问题描述】:

我在构建示例可视 C++ 项目时遇到此错误。 首先我下载了​​ 3 个示例项目,都解决了相同的问题,打印出所有小于 N 的素数(您可能知道这些示例项目?)。我构建了纯C项目没有任何问题。但是当我尝试构建一个基于程序集的项目时,我得到了这个错误。

谢谢。

【问题讨论】:

尝试禁用 SAFESEH 我花了一分钟才在菜单中找到它,所以这里是路径:项目属性 |配置属性 |链接器 |高级 |图像具有安全异常处理(列表中的最后一项) 【参考方案1】:

在 Visual Studio 2012 速成版中:

Right-click on your project ->
Properties -> 
Configuration Properties ->
Linker ->
Advanced and changed "Image Has Safe Exception Handlers" to "No (/SAFESEH:NO)"

【讨论】:

【参考方案2】:

/SAFESEH:NO linker setting 的图片值 0x3e8 个字:

或者您可以告诉 MASM 保证该对象不包含异常处理程序或任何异常处理程序都使用 .SAFESEH 定义,如果您知道这对您的程序集是正确的代码

这将允许您为项目的链接启用/SAFESEH。但它是正确的吗?你在做保证!请务必或使用第一个选项。

【讨论】:

【参考方案3】:
Try to disable SAFESEH.

来自规范:指定了 /SAFESEH,但模块与安全异常处理功能不兼容。

【讨论】:

我明白了,谢谢!但是每个基于组装的mudule都不安全吗?我在哪里可以搜索 SAFE 模块的标准? 看看这篇文章:social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/…HTH @LeoChapiro 谢谢!从那里(Mike Danes):“但看起来很容易让 masm 生成一个 safeseh 目标文件,只需将 Use Safe Exception Handler MASM 属性设置为 Yes(参见项目属性,Microsoft 宏汇编器,高级)。 • 参见.safeseh MASM 指令:docs.microsoft.com/en-us/cpp/assembler/masm/… 但您可能不需要它,因为您的汇编代码实际上不包含任何异常处理程序。”(链接已修复)

以上是关于错误 lnk2026:模块对 safeseh 图像不安全的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studioerror LNK2026: 模块对于 SAFESEH 映像是不安全的(转)

Visual Studio 2013 编译时 "error LNK2026:模块对于 SAFESEH 映像是不安全的" 解决方案

zlib match686.obj : error LNK2026 SAFESEH

VS2013 中 HTMLhelp 的替代方案

用 VS2012 编译 libffi 失败,出现致命错误 LNK1281: Unable to generate SAFESEH image

VS2013模块对于SAFESEH映像是不安全的解决方法