【发布时间】:2021-03-07 16:11:57
【问题描述】:
我的程序中的第三方库试图通过 Microsoft 库 msvcrt.lib 调用 __scrt_common_main_seh,但它是由某个未知库定义的,因此会出现链接器错误。我不知道这个函数应该做什么,也不知道它是在哪里定义的。
我在网上找了这个函数,但除了对链接器错误的一般描述外,没有找到任何线索。
我相信它可能正在为 win32 GUI 应用程序做一些设置。定义它的库可能会被 Visual Studio 配置为项目依赖项,但我的项目正在使用 Bazel。
【问题讨论】:
-
__scrt_common_main_seh是 C 和 C++ 语言运行时启动代码,最终在全局 SEH 异常过滤器下运行您的代码。当您的代码以灾难性方式失败时,您至少会从中获得一些错误诊断。从问题中完全不清楚您处于什么情况,但很明显您的proposed answer 充其量只是猜测。原生开发者中有句老话是这样的:如果你不知道为什么你的代码可以工作,那么它就不会。 -
感谢@IInspectable。我认为您可以很好地改进我的答案。您也许能够解释什么是 SEH 异常过滤器,它是如何被实例化的,以及在什么情况下链接器无法找到它。