我正在使用SFML的音频库。
在我的班级中,我尝试使用一个私有静态变量来保存SoundBuffer *:
static sf::SoundBuffer* breakBlockBuffer;
当我尝试构建时,这会产生链接器错误:
Chunk.obj:错误LNK2001:未解析的外部符号“private:static class sf :: SoundBuffer * Chunk :: breakBlockBuffer”(?breakBlockBuffer @ Chunk @@ 0PAVSoundBuffer @sf @@ A) myprogram.exe:致命错误LNK1120:1个未解析的外部
但是,如果我将其声明为实例变量,则可以:
sf::SoundBuffer* breakBlockBuffer;
无论是动态链接还是静态链接库,都会发生这种情况。它也在SFML1.6和SFML2.0中都存在。
我觉得我可能犯了一些愚蠢的错误,因为我在C ++上很生气,但代码看起来应该对我好。
答案 0 :(得分:2)
如果在类中声明静态变量,则还必须在源文件中定义它:
foo.hpp
:
class foo
{
static int bar;
};
foo.cpp
:
int foo::bar;
看起来你没有这样做。