0

我正在使用 SFML 的音频库。

在我的课堂上,我尝试使用一个私有静态变量来保存 SoundBuffer*,如下所示:

static sf::SoundBuffer* breakBlockBuffer;

当我尝试构建时,这会导致链接器错误:

Chunk.obj:错误 LNK2001:未解析的外部符号“私有:静态类 sf::SoundBuffer * Chunk::breakBlockBuffer”(?breakBlockBuffer@Chunk@@0PAVSoundBuffer@sf@@A) myprogram.exe:致命错误 LNK1120:1 个未解析的外部

但是,如果我将其声明为实例变量,则它可以工作:

sf::SoundBuffer* breakBlockBuffer;

无论我是动态链接还是静态链接库,都会发生这种情况。它还在 SFML1.6 和 SFML2.0 中持续存在。

我觉得我可能犯了一些愚蠢的错误,因为我对 C++ 很生疏,但代码看起来对我来说应该没问题。

4

1 回答 1

2

如果你在你的类中声明一个静态变量,你还必须在你的源文件中定义它:

foo.hpp

class foo
{
   static int bar;
};

foo.cpp

int foo::bar;

看起来你没有这样做。

于 2013-03-15T14:23:39.537 回答