私のクラスでは、と呼ばれる関数が宣言されていPlaySound(std::wstring)
ます。このクラスは、独自の名前空間内に存在します。PlaySoundW()
このメンバー関数をこのクラスのインスタンスから別の場所で呼び出そうとすると、何らかの理由でdefined inを呼び出そうとしているように見えるため、リンカー エラーが発生しますMMSystem.h
。自分の名前空間に物を置くことは、この種の競合を防ぐことを意図していると思いましたか?
リンカー エラー:
Error 13 error LNK2019: unresolved external symbol "public: void __thiscall MyNamespace::SoundProcessor::PlaySoundW(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >)" (?PlaySoundW@SoundProcessor@MyNamespace@@QAEXV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z) referenced in function "public: void __thiscall MyNamespace::Engine::Init(struct HWND__ *,long *,long *,int)" (?Init@Engine@MyNamespace@@QAEXPAUHWND__@@PAJ1H@Z)
私がこれを理解できる最善の方法は、コードで使用していると不平を言っているようですが、クラスPlaySoundW()
で定義していないということです。SoundProcessor
私の関数は呼び出されませんPlaySoundW()
。
私は自分の関数をこのように呼び出しています(そして、関数が宣言されているものと同じ名前空間内から):
soundProcessor.PlaySound(TEXT("Sounds\\MySound.WAV"));
これが私が見逃した明らかなものであることを願っています。