错误 LNK2001 无法解析的外部符号 “private: static struct std::once_flag ThreadPool::flag_” (?flag_@ThreadPool@@0Uonce_flag@std@@A) STL D:\VS2019\STL\源.obj 1
错误原因 :链接器无法解析 ThreadPool::flag_
这个静态成员变量。这通常是因为静态成员变量在声明之后没有进行定义。
解决方案:
在.cpp里面对这个静态的成员变量进行初始化。
如果不是这个静态成员函数的问题 , 也爆出无法解析的外部符号这个错误
-
检查main , 是否书写正确。
-
检查 ,类的成员函数是否全部都实现。
-
实现的方式与声明不匹配。
-
最后如果发现 ,1、2 、3都没用任何问题 ,那么此时在 main 文件中 将头文件。
#include "Human.h" // 改成 #include "Human.cpp"
-
如果你是使用的是模板函数 , 那么请将定义和实现都放在 . h 文件下。如下
class Human{ public: Human(); ~Human(); template <typename F , typename... Agrs> void push_task(F &&f , Agrs&&... agrs); }; template <typename F, typename... Agrs> void ThreadPool::push_task(F&& f, Agrs&&... agrs) { // 具体实现 }
不出意外 ,应该可以解决所有问题 ,此时如果没用解决你的问题 ,那么请你一定要联系我。直接博客给我发消息。