“无法生成 SAFESEH 图像。”但禁用 SAFESEH 会破坏依赖链接

问题描述 投票:0回答:1

我的代码在发布配置中构建得很好,但是当我将其设置为调试配置时,它会抛出两个错误(一次和四次):

LNK1281 Unable to generate SAFESEH image.
LNK2026 module unsafe for SAFESEH image.

当然,我来这里寻找答案,每个人似乎都一致同意在属性中将其关闭:

Image has Safe Exception Handlers     No (/SAFESEH:NO) 

但是,这破坏了与我的依赖项的链接。它构建时没有错误,但在运行时找不到外部库。我在解决方案属性中设置了它们的路径。我没有能力编辑这些库套件。

我有哪些选择可以解决这个问题?搜索结果不足。

这是错误弹出窗口的一个示例,但还有其他几个(包括上面错误中的

HawkNL.dll
):


debugging dependencies libraries
1个回答
0
投票

咨询了一位乐于助人的同事后,他建议运行 Microsoft Depends (Dependency Walker)。所以我禁用了 SAFESEH (

/SAFESEH:NO
) 并通过 Depends 运行它。正如预期的那样,尽管在项目的属性中正确链接,但“未找到”的依赖项在运行时也没有在 Depends 中链接。但它确实给了我们 Visual Studio 正在寻找的确切位置,但发现它没有在应该寻找的地方。

所以我们只是将“丢失的”依赖项/DLL 与可执行文件一起复制到调试构建文件夹中。该项目能够找到依赖项并在调试中运行应用程序。所以,即使我仍然不知道为什么依赖链接丢失,它现在可以工作了。
谢谢瑞克。

© www.soinside.com 2019 - 2024. All rights reserved.