解決MFC下執行緒建立的一個編譯錯誤
阿新 • • 發佈:2019-01-23
錯誤的資訊為:error C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *)'
今天在公司用winsdk寫了個執行緒的東西,回來後想用mfc的一些封裝類來寫,發現的確很簡單,很多引數都不用了。
用AfxBeginThread建立了個執行緒的指標也就是CWinThread *thread
一起看一下程式碼吧:
CWinThread *thread;
thread = AfxBeginThread(ThreadCallFunc, (LPVOID)this);
因為ThreadCallFunc是執行緒的回撥函式,我想當然的用Class Wizard來給View類添加了個成員函式,
產生的函式為
UINT CVedioView::ThreadCallFunc(LPVOID pParam)
{
return 0;
}
我編譯就出現:error C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *)'
的錯誤,google了很多有的說是回撥函式必須是static我也嘗試了還是錯誤。最後找到問題,就是不要用Class Wizard給View類新增成員函式,而是自己在cpp裡面新增一個函式也就是:
UINT ThreadCallFunc(LPVOID pParam)
{
return 0;
}
這樣就好了。