用 VS2012 编译 libffi 失败,出现致命错误 LNK1281: Unable to generate SAFESEH image
Posted
技术标签:
【中文标题】用 VS2012 编译 libffi 失败,出现致命错误 LNK1281: Unable to generate SAFESEH image【英文标题】:Compiling libffi with VS2012 fails with fatal error LNK1281: Unable to generate SAFESEH image 【发布时间】:2013-01-31 16:08:06 【问题描述】:用 VS11 编译 libffi 会出现以下链接器错误
libffi\libffi-3.0.9\ms\Win32\Debug\ffi.dll : fatal error LNK1281: Unable to generate SAFESEH image.
同样的项目用 VS10 编译正常,但是用 VS2012 自动升级后,它开始给出链接器错误
MSDN 中的解释太晦涩难懂了
我可能会使用 /SAFESEH:NO
重建,但我不确定其中的含义。
请告知可能出了什么问题。
【问题讨论】:
【参考方案1】:没有SAFESEH
的主要含义是Windows 8 商店或Windows 8 desktop certification 不会接受您的应用程序。如果这对您来说不是问题,请随时使用/SAFESEH:NO
。
documentation 说:
链接器无法生成图像的最常见原因是链接器的一个或多个输入文件(模块)与安全异常处理程序功能不兼容。模块与安全异常处理程序不兼容的一个常见原因是,它是使用 Visual C++ 早期版本的编译器创建的。
项目升级到VS2012是否有可能将设置更改为/SAFESEH:YES
。也许你从来没有使用过SAFESEH
。
【讨论】:
非常感谢。你是救世主。顺便说一句,你知道这是否记录在某处The main implication of not having SAFESEH is that your application won't be accepted for the Windows 8 store. If that's not an issue for you then you should use /SAFESEH:NO.
我认为您不会找到任何相关文档。您可以轻松发现 Windows 8 商店需要 SafeSEH。但至于它是主要含义,那不会写在任何地方,并且主要是一种观点。 SafeSEH 已经存在了很长时间。许多编译器甚至无法生成它需要的异常表。当然它会消失,因为它只对 32 位应用程序有意义。编写一个 64 位应用程序,您的可执行文件必须包含异常表。
谢谢!我喜欢在 *** 上搜索并找到与我的问题完全匹配的内容!以上是关于用 VS2012 编译 libffi 失败,出现致命错误 LNK1281: Unable to generate SAFESEH image的主要内容,如果未能解决你的问题,请参考以下文章
wsl2 libffi buildroot编译失败config.log: No such file or directory
wsl2 libffi buildroot编译失败config.log: No such file or directory
VS2010 c++编译的时候总是出现找不到exe文件、这是个啥情况