本地用 vs2019 编译 libprotobuf 静态库, 然后放到正式项目里编译,没问题。 结果在编译服务器 编译 最后link却报错: 7>目标 Link: 7> libprotobufd.lib(any.obj) : error LNK2001: 无法解析的外部符号 __imp___std_init_once_begin_initialize 7> libprotobufd.lib(implicit_weak_message.obj) : error LNK2001: 无法解析的外部符号 __imp___std_init_once_begin_initialize 7> libprotobufd.lib(map_field.obj) : error LNK2001: 无法解析的外部符号 __imp___std_init_once_begin_initialize 7> libprotobufd.lib(descriptor.pb.obj) : error LNK2001: 无法解析的外部符号 __imp___std_init_once_begin_initialize 7> libprotobufd.lib(dynamic_message.obj) : error LNK2001: 无法解析的外部符号 __imp___std_init_once_begin_initialize 7> libprotobufd.lib(text_format.obj) : error LNK2001: 无法解析的外部符号 __imp___std_init_once_begin_initialize 7> libprotobufd.lib(common.obj) : error LNK2001: 无法解析的外部符号 __imp___std_init_once_begin_initialize
5> libprotobufd.lib(any.obj) : error LNK2001: 无法解析的外部符号 __imp___std_init_once_complete 5> libprotobufd.lib(implicit_weak_message.obj) : error LNK2001: 无法解析的外部符号 __imp___std_init_once_complete 5> libprotobufd.lib(map_field.obj) : error LNK2001: 无法解析的外部符号 __imp___std_init_once_complete 5> libprotobufd.lib(descriptor.pb.obj) : error LNK2001: 无法解析的外部符号 __imp___std_init_once_complete 5> libprotobufd.lib(dynamic_message.obj) : error LNK2001: 无法解析的外部符号 __imp___std_init_once_complete 5> libprotobufd.lib(text_format.obj) : error LNK2001: 无法解析的外部符号 __imp___std_init_once_complete 查找资料无果。 目前推测编译的环境不同导致的。 查了一下 两边 vs2019 版本还是有差异的编库的是16.8.1 .net framework 4.8.04084 一个 16.4.2 .net framework 4.7.03062 一台 windows sdk最高版本 10.0.18362.0, 一台windows sdk最高版本 10.0.17763.0, 都用 10.0.17763.0编译, 还是没用。 最后在低版本的电脑上编库,目前暂时没问题。 后面没时间研究到底是哪个版本不对。 反正一个项目组,vs环境和补丁版本最好一致....
文章讲述了在本地VS2019编译的libprotobuf静态库在编译服务器上链接时遇到__imp___std_init_once相关错误,涉及不同环境版本差异的排查过程,最终通过在低版本环境中编译解决。

3977

被折叠的 条评论
为什么被折叠?



