0

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++でかなり錆びているので、私はいくつかのばかげた間違いをしたかもしれないと感じていますが、コードは私には問題ないはずです。

4

1 に答える 1

2

クラスで静的変数を宣言する場合は、ソース ファイルでも定義する必要があります。

foo.hpp:

class foo
{
   static int bar;
};

foo.cpp:

int foo::bar;

あなたはそれをしなかったようです。

于 2013-03-15T14:23:39.537 に答える