正如Praetorian在评论中所说,
std::call_once需要调用系统线程库。更具体地说,它将调用
__gthread_once。如果可执行文件未链接到pthread,则该函数将返回
-1,然后将引发异常。
要制作程序
-pthread,必须将启用了pthread的选项同时传递给编译器和链接器,如gcc文档中所述。
-lpthread有时仅通过链接是不够的,不仅仅是因为附加宏。对于CMake用户,有一个现成的模块,可以帮助添加对pthread(或任何系统线程库)的支持,该支持可以这样使用:
find_package(Threads REQUIRED)target_link_libraries(myTarget PRIVATE Threads::Threads)
如有必要,这将添加所有必需的编译和链接标志。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)