gpt4 book ai didi

c - 调试和发布之间的奇怪链接差异导致未解析的 _except_handler3,或者为什么,哦,为什么我不知道 libcmtd?

转载 作者:行者123 更新时间:2023-11-30 15:38:10 27 4
gpt4 key购买 nike

我一直在开发的一个 Windows 应用程序是在不使用 CRT 的情况下交付的。有一些很好的文章描述了这样做的指导方针和好处(我在写这个问题时找不到这些 - 抱歉)。除了不明确使用 CRT 符号之外,这一切都与链接器和编译器配置有关。我的发布和调试配置现在几乎相同,并且都指定 /NODEFAULTLIB:"LIBCMT" 唯一的区别是运行时标志 /MT (在发布中)与 /MTd (在调试中) - 这是必需的,因为我对 SEH 使用 __try/__ except 语法,因此唯一需要的函数是 _except_handler3()。但是,调试版本正在成功构建,而发布版本则失败,并出现 Unresolved Symbol _ except_handler3 链接错误。当强制发布版本使用 /MTd 进行编译时 - 此问题已解决。

这怎么可能?哪个 .lib 包含 _ except_handler3 导出?我该如何解决这个问题?

最佳答案

对于没有 CRT 的应用程序,请参阅:http://blog.kalmbach-software.de/2008/02/02/smallest-application-size-for-win32-console-application/

但是如果你想使用__try/__ except则需要使用CRT;或者您需要编写自己的“_ except_handler3”。

另请参阅:_except_handler3

您还有 CRT 源代码,您可以查看源代码,看看它在做什么!请参阅:C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\crt\src

关于c - 调试和发布之间的奇怪链接差异导致未解析的 _except_handler3,或者为什么,哦,为什么我不知道 libcmtd?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21916530/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com