我有以下代码:
#include <windows.h>
class systemfunctions
{
public:
void (*sleep) (DWORD ms);
systemfunctions ()
{
sleep = reinterpret_cast<void>(Sleep);
}
} sys;
当我致电sys.sleep()
时,应用程序崩溃了。为什么程序崩溃,我该怎么做才能解决问题?
答案 0 :(得分:2)
Windows.h声明Sleep {),如WINBASEAPI VOID WINAPI Sleep(__in DWORD dwMilliseconds);
,尝试告诉编译器在使用该指针时需要使用正确的调用约定:
typedef VOID (WINAPI * SleepFunction)(DWORD ms);
SleepFunction sleep;
sleep = Sleep;
答案 1 :(得分:1)
使用GetProcAddress
的返回值时,唯一应该转换函数指针的时间。
摆脱演员表,然后编译器会告诉你出了什么问题。