【问题标题】:SFML can't create static sf::SoundBuffer* class variable?SFML 无法创建静态 sf::SoundBuffer* 类变量?
【发布时间】:2013-03-07 05:16:53
【问题描述】:

我正在使用 SFML 的音频库。

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

static sf::SoundBuffer* breakBlockBuffer;

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

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

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

sf::SoundBuffer* breakBlockBuffer;

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

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

【问题讨论】:

    标签: visual-c++ linker sfml


    【解决方案1】:

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

    foo.hpp:

    class foo
    {
       static int bar;
    };
    

    foo.cpp:

    int foo::bar;
    

    看起来你没有这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-20
      • 1970-01-01
      • 1970-01-01
      • 2013-06-12
      • 2016-10-25
      • 2022-12-13
      • 2017-05-03
      • 2020-10-25
      相关资源
      最近更新 更多