warning LNK4006 这个烂问题终于搞掉了!

来源:互联网 发布:校园网络需求报告 编辑:程序博客网 时间:2024/04/29 11:15

就写了一个简单的Timer计时器类,单独编译完全没问题,警告什么的都没有,但是一link就出岔子,每次都提示 xxx.obj : warning LNK4006: "private: static class std::vector<class Nomad::Timer *,class std::allocator<class Nomad::Timer *> > Nomad::Timer::mTimers" (?mTimers@Timer@Nomad@@0V?$vector@PAVTimer@Nomad@@V?$allocator@PAVTimer@Nomad@@@std@@@std@@A) 已在 NomadTimer.obj 中定义;已忽略第二个定义。
除了有个警告很碍眼其实暂时也没发现什么很严重的问题,但是每次都警告我很不爽。。。
google了好久都没找到解决办法,其他人发出的帖子一般都是说设置问题之类,但是我也按照他们说的改过设置了,就是不对头,后来自己琢磨琢磨,警告中说重复定义,msdn上面也说去除多余的定义就ok了,回头看看自己的代码,是不是因为static std::vector<Timer*> mTimers的定义也放在头文件的缘故?这样其他文件包含这个头文件的时候就会找到这个定义了,多个文件包含当然会发现多个定义了,于是将这个 static成员放cpp中定义,哗~~整个世界清静了。。。

阅读全文
0 0
原创粉丝点击