別のスレッドでいくつかの作業を実行できるクラスを作成しました。
class SkeData
{
public:
SkeData(INuiSensor* pSensor);
~SkeData();
HANDLE StartSaveSkeData_Frames(int nFrames = 1);
HANDLE StartSaveSkeData2File_Frames(HANDLE hFile,int nFrames = 1);
[...]
private:
//Two thread functions
static DWORD WINAPI AddFrames(LPVOID lpParam);
static DWORD WINAPI AddFrames2File(LPVOID lpParam);
[...]
};
HANDLE SkeData::StartSaveSkeData_Frames(int nFrames)
{
[...]
m_hThread = CreateThread(NULL, 0, AddFrames, this, 0, NULL);
return m_hThread;
}
HANDLE SkeData::StartSaveSkeData2File_Frames(HANDLE hFile,int nFrames)
{
[...]
m_hThread = CreateThread(NULL, 0, AddFrames2File, this, 0, NULL);
return m_hThread;
}
DWORD WINAPI SkeData::AddFrames(LPVOID lpParam)
{
SkeData *This = (SkeData *)lpParam;
return This->Thread_AddFrames();
}
DWORD WINAPI SkeData::AddFrames2File(LPVOID lpParam)
{
SkeData *This = (SkeData *)lpParam;
return This->Thread_AddFrames2File();
}
When I built the program solution in VS2010, linking error came up like this:
SkeData.obj : error LNK2019: unresolved external symbol "private: unsigned long __thiscall SkeData::Thread_AddFrames2File(void)" (?Thread_AddFrames2File@SkeData@@AAEKXZ) referenced in function "private: static unsigned long __stdcall SkeData::AddFrames2File(void *)" (?AddFrames2File@SkeData@@CGKPAX@Z)
1>E:\***\DataCollection.exe : fatal error LNK1120: 1 unresolved externals
1>
1>Build FAILED.
ただし、スレッド関数の 1 つを削除すると、正常にビルドできます。したがって、エラーの理由はスレッド関数に関するものだと思います。しかし、クラスにスレッド関数をもう 1 つ追加できない理由がまだわかりませんか???
誰かがもっと説明できることを願っています。
ありがとうございました!
詳細: 申し訳ありませんが、コードを貼り付けたときに何か問題が発生しました..両方のスレッド関数を実装しました.実装しなかった場合、エラーはこのようにはなりませんよね?