我已经在标头中声明了静态 const 数组,然后在 cpp 文件中实现了它,但我无法弄清楚发生了什么。
子系统.h:
#ifndef _SUBSYS_H
#define _SUBSYS_H
namespace Engines
{
namespace Particles
{
class SubSys : public ISubSys
{
private:
static const int _M[ 3 ];
...
//rest of class
};
}
}
#endif
子系统.cpp:
#include "Subsys.h"
namespace Engines
{
namespace Particles
{
const int SubSys::_M[ 3 ] =
{
0x80,
0x7f,
0x01
};
}
}
错误 LNK2001:未解析的外部符号“private static int const * const Engines::Particles::SubSys::_M”(?_M@SubSys@Particles@Engines@@0QBIB)
如果我在类外部的标头中实现数组,我不会在使用静态库的应用程序中得到 LNK2001 错误。我在编译静态库时确实得到了 LNK4006(即多次添加符号)。
我还删除了 .cpp 文件中的命名空间,并使用了完整的 Engines::Particles::SubSys::_M 名称。出现同样的问题。