gpt4 book ai didi

c++ - 无法使用 _beginthreadex 编译 C++ 程序

转载 作者:太空宇宙 更新时间:2023-11-04 16:28:29 28 4
gpt4 key购买 nike

#include <iostream>
#include <Windows.h>
#include <process.h>

//#include "windowstate.cpp"

//DWORD WINAPI MyThreadFunction( LPVOID lpParam );


using namespace std;

int Zeit;

unsigned int __stdcall wfshutdown() {
Sleep(Zeit*60000);
system("shutdown -s -t 2");
return 0;
}


void shutdown() {
cout << "When I should shut down your PC(in minutes)" << endl;
cin >> Zeit;
if(Zeit==0) {
return;
}
// windowstate(0);


HANDLE hThread;
DWORD threadID;
hThread = (HANDLE)_beginthreadex( NULL, 0, &wfshutdown, NULL, 0, &threadID );
}

我无法运行该程序。我收到此错误,我不明白:

Error 1 error C2664: '_beginthreadex' : cannot convert parameter 3 from 'unsigned int (__stdcall *)(void)' to 'unsigned int (__stdcall *)(void *)'32

我在网上搜索了一个多小时才找到解决方案,因此,我非常希望您能提供帮助。

最佳答案

你的线程函数应该接收一个void*参数:

unsigned int __stdcall wfshutdown(void *) {
Sleep(Zeit*60000);
system("shutdown -s -t 2");
return 0;
}

当遇到这种情况时,尝试分析编译器输出。在这种情况下,它表明 _beginthreadex 的第三个参数应该是 unsigned int (__stdcall *)(void *),但您使用的是 unsigned int (_stdcall *)(无效)

因此,很明显,预期的和您使用的之间的差异是 void* 参数。

关于c++ - 无法使用 _beginthreadex 编译 C++ 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9703981/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com