[英]CreateThread string to LPVOID
我正在尝试创建一个线程来处理ZIP归档:
HANDLE hThread = CreateThread(
NULL,
0,
ZipProcess,
(LPVOID) cmdline.c_str(),
0,
NULL);
我在lpParameter
中将命令行参数作为字符串传递。
我不断收到此错误:
...类型为'void(MyClass ::)(std :: string){aka void(MyClass ::)(std :: basic_string)}的参数与'LPTHREAD_START_ROUTINE {aka long unsigned int( )(void ) }'|
我尝试了几件事-通过引用传递, 写入缓冲区 , reinterpret_cast
等,但是错误仍然存在。 如何解决这个问题?
您正在寻找错误的位置。 编译器抱怨第三个参数,线程过程。 您的错误看起来像是GCCish,这表明在Error的意义上传入了参数3 ...
要解决此问题,您需要一个实际上与功能需要匹配的功能签名(这是LPTHREAD_START_ROUTINE
typedef的扩展版本),即:
DWORD (WINAPI *lpStartAddress)(LPVOID)
您定义的三个问题是:
__stdcall
)调用约定。 std::string
参数,而不是LPVOID
(又称为void *
)。 this
参数,从而导致签名不匹配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.