windows 什么是__scrt_common_main_seh?

jjjwad0x  于 2023-03-24  发布在  Windows
关注(0)|答案(2)|浏览(250)

我的程序中的第三方库试图通过Microsoft库msvcrt.lib调用__scrt_common_main_seh,但它是由一些未知的库定义的,因此给出了一个链接器错误。我不知道这个函数应该做什么,也不知道它是在哪里定义的。
我在网上寻找这个函数,但是除了链接器错误是什么的一般描述外,没有找到任何线索。
我相信它可能正在为win32 GUI应用程序做一些设置。定义它的库可能被Visual Studio配置为项目依赖项,但我的项目使用的是Bazel。

hm2xizp9

hm2xizp91#

总结

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

详情

This answer显示__scrt_common_main_seh通常在mainCRTStartup期间被调用,这是windowsconsole应用程序的默认entry point。然后__scrt_common_main_seh(间接)负责调用main()
我的程序没有main()函数,这可能会阻止编译器生成__scrt_common_main_seh(只是猜测。我完全不知道谁定义了__scrt_common_main_seh
然而,我发现我所链接的库定义了一个wWinMain()函数,所以我尝试添加链接器标志/ENTRY:wWinMainCRTStartup,链接器错误消失了。

pwuypxnk

pwuypxnk2#

对我起作用的是加上:/ENTRY:mainCRTStartup到链接器标志(wWinMainCRTStartupWinMainCRTStartup不工作)。
参见https://stackoverflow.com/a/39704287/7683041

相关问题