// Ah には次のコードがあります
「afxwin.h」を含める
「msclr\auto_gcroot.h」を含めます
名前空間システムの使用;
msclr::auto_gcroot を使用します。
名前空間 A
{
公開参照クラス A
{
公衆:
仮想ブール Func();
A();
〜A();
仮想ブール接続();
保護:
DWORD WINAPI threadConnect(void* pParam);
};
パブリック クラス AHelper
{
公衆:
auto_gcroot A;
};
}
//A.cppには以下のコードがあります
// これはメインの DLL ファイルです。
「stdafx.h」を含める
「あ」を含む
「文字列」を含める
「sstream」を含める
「stdlib.h」を含める
「strsafe.h」を含める
「windows.h」を含める
「tchar.h」を含める
名前空間 A
{
A::A()
{
m_FuncHandle = mpsNil;
}
A::~A()
{
}
ブールA::関数()
{
true を返します。
}
ブール A::Connect()
{
AHelper* AHelper;
m_retVal = false;
AHelper = 新しい AHelper();
AHelper->A = this;
HANDLE Handle_Of_Thread = 0;
DWORD dwThreadId;
//DWORD WINAPI threadConnect(void* pParam);
//ここで関数宣言を宣言すると、
//エラー LNK2001: 未解決の外部シンボル "unsigned long __stdcall threadConnect(void *)" (?threadConnect@@YGKPAX@Z)
Handle_Of_Thread = CreateThread (NULL, 0, threadConnect, AHelper, 0, &dwThreadId); // このコードで取得しています
//エラー C3867: 'A::A::threadConnect': 関数呼び出しに引数リストがありません。「&A::A::threadConnect」を使用して、メンバーへのポインターを作成します
m_retVal を返します。
}
DWORD WINAPI A::threadConnect(void* pParam)
{
AHelper* AHelper = reinterpret_cast(pParam);
// ここで Func を呼び出す必要があります
0 を返します。
}
}