我已經在頭文件中聲明瞭靜態常量數組,然後在cpp文件中實現它,但是我無法弄清楚發生了什麼。靜態庫:靜態常量數組 - LNK2001:應用程序使用庫中無法解析的外部符號
Subsys.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
Subsys.cpp:
#include "Subsys.h"
namespace Engines
{
namespace Particles
{
const int SubSys::_M[ 3 ] =
{
0x80,
0x7f,
0x01
};
}
}
錯誤LNK2001:無法解析的外部符號 「私有靜態詮釋常量* const的發動機::顆粒:: SUBSYS :: _ M」 (?_M @ SubSys @ Particles @ Engines @@ 0QBIB)
如果我在類外的頭中實現數組,我不會在使用靜態庫的應用程序中得到LNK2001錯誤。當編譯靜態庫時,我確實得到了LNK4006(即不止一次添加了符號)。
我也刪除了.cpp文件中的命名空間,並使用完整的Engines :: Particles :: SubSys :: _ M名稱。發生同樣的問題。