__scrt_common_main_seh 是什么/在哪里?

Mar*_*ark 12 c++ windows winapi

我的程序中的第三方库试图__scrt_common_main_seh通过 Microsoft 库进行调用msvcrt.lib,但它是由某些未知库定义的,因此会出现链接器错误。我不知道这个函数应该做什么或者它是在哪里定义的。

我在网上查找了这个函数,但除了链接器错误的一般描述之外没有找到任何线索。

我相信它可能正在为 win32 GUI 应用程序做一些设置。定义它的库可能被 Visual Studio 配置为项目依赖项,但我的项目正在使用 Bazel。

Mar*_*ark 16

概括

对于出现错误的非控制台应用程序,error LNK2019: unresolved external symbol main referenced in function "int __cdecl __scrt_common_main_seh(void)"请尝试添加链接器标志/ENTRY:wWinMainCRTStartup/ENTRY:WinMainCRTStartup

对于出现该错误的控制台应用程序,请确保实现一个main()功能。

细节

这个答案表明,__scrt_common_main_seh通常在 Windows控制台mainCRTStartup应用程序的默认入口点期间调用。然后(间接)负责调用.__scrt_common_main_sehmain()

我的程序没有main()函数,这可能会阻止编译器生成__scrt_common_main_seh(只是推测。我完全不知道谁定义了__scrt_common_main_seh

然而,我确实发现我链接的库定义了一个wWinMain()函数。所以我尝试添加链接器标志/ENTRY:wWinMainCRTStartup,链接器错误消失了。