[英]invalid conversion from 'DWORD (*)(void*)' to 'DWORD (*)(void*)'
invalid conversion from 'DWORD (*)(void*)' to 'DWORD (*)(void*)'
。 蛋糕==謊言1 == 0
我不知道這意味着什么...我在這段代碼中得到了
HANDLE CPlugin::CreateWinampThread() ||
{ __VVVVVVVV__
hWinampThreadHandle = (HANDLE)CreateThread(NULL, 0, StartWinampThread, (void*)this, 0, &dwWinampThreadID);
if (!hWinampThreadHandle)
return 0;
CloseHandle(hWinampThreadHandle);
return hWinampThreadHandle;
}
.
DWORD WINAPI CPlugin::StartWinampThread(void* lpParam)[...]
如果StartWinampThread是成員函數,則必須為靜態。
請參閱此處: 在C中它是可安全使用的靜態成員函數指針,用於C-API-Callb,了解為什么需要使用外部“ C”
正確的方法是這樣的:
HANDLE CPlugin::CreateWinampThread() ||
{ __VVVVVVVV__
hWinampThreadHandle = (HANDLE)CreateThread(NULL, 0, ::StartWinampThread, (void*)this, 0, &dwWinampThreadID);
if (!hWinampThreadHandle)
return 0;
CloseHandle(hWinampThreadHandle);
return hWinampThreadHandle;
}
.
// A callback function for C code must have C linkage.
// That is not possable for C++ static member functions.
extern "C" DWORD WINAPI StartWinampThread(void* lpParam)
{
// You can always call your static member function here.
CPlugin::StartWinampThread(lpParam)
}
它與對象有關嗎-對象的StartWinampThread方法有一個隱式的“ this”參數,因為它是類的成員。
如果將其更改為獨立方法但保留相同的簽名(例如,來自
DWORD WINAPI CPlugin::StartWinampThread(void* lpParam)[...]
到DWORD WINAPI StartWinampThread(void * lpParam)[...]
(我知道它對您不起作用,我只是想看看它是否消除了編譯器的抱怨)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.