使用:
static void WINAPI ServiceStart(DWORD argc, LPTSTR* argv);
int main() {
SERVICE_TABLE_ENTRY DispatchTable[] = {
{"MyService", ServiceStart},
{NULL, NULL}
};
}
不起作用:
错误C2440:'初始化':无法从'void(__stdcall Service :: *)(DWORD,LPTSTR *)'转换为'LPSERVICE_MAIN_FUNCTIONA'
class Service {
static void WINAPI ServiceStart(DWORD argc, LPTSTR* argv);
};
int main() {
SERVICE_TABLE_ENTRY DispatchTable[] = {
{"MyService", Service::ServiceStart},
{NULL, NULL}
};
}
答案 0 :(得分:4)
您必须在该上下文中使用&
才能获得正确的指针。
答案 1 :(得分:3)
使用&Service::ServiceStart
,而不是Service::ServiceStart
。
一条建议:既然你把它作为static
类的Service
函数,那么也要重命名它。 ServiceStart
不必要地长。我想这里隐含着Service
。如果是这样,那么只需Start
:
class Service
{
static void WINAPI Start(DWORD argc, LPTSTR *argv);
};
然后使用&Service::Start
。