- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个线程来处理 ZIP 归档:
HANDLE hThread = CreateThread(
NULL,
0,
ZipProcess,
(LPVOID) cmdline.c_str(),
0,
NULL);
我在 lpParameter
中将命令行参数作为字符串传递。
我一直收到这个错误:
...argument of type 'void (MyClass::)(std::string) {aka void (MyClass::)(std::basic_string)}' does not match 'LPTHREAD_START_ROUTINE {aka long unsigned int ()(void)}'|
我已经尝试了几种方法 - 通过引用传递,writing to a buffer 、reinterpret_cast
等,但错误仍然存在。如何解决这个问题?
最佳答案
你找错地方了。编译器提示第三个参数,线程过程。您的错误看起来像 GCC 风格,并且类似于 Error passing in argument 3...
要修复它,您需要一个与函数所采用的实际匹配的函数签名(这是 LPTHREAD_START_ROUTINE
typedef 的扩展版本),即:
DWORD (WINAPI *lpStartAddress)(LPVOID)
您定义的三个问题是:
__stdcall
)调用约定。std::string
参数而不是 LPVOID
(又名 void *
)。this
参数,从而导致签名不匹配。关于c++ - CreateThread 字符串到 LPVOID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13355408/
我正在处理处理 USB 设备的函数。 但我已经在一些简单的事情上遇到了问题: 我遇到了编译错误 A value of the type "LPVOID" can not be assigned to
我有以下代码: IShellLink* psl; HRESULT hres = CoCreateInstance( CLSID_ShellLink, NULL, CLSCTX_
我确实在论坛和 MSDN 上看了一会儿,但似乎无法找到我的问题所在。我相信这对于像我这样的非菜鸟来说很简单。我正在尝试编译一个简单的程序,它不喜欢我的代码。 #include "pch.h" #inc
我有一个采用 LPVOID 类型参数的 C 函数。传入的值是\0 分隔的字符数组。如何转换参数以查看 Visual Studio/windbg 中的传入值? 最佳答案 您可以在脚本中执行此操作。像下面
我正在编写一个简单的控制台应用程序,它允许我从通过我提供的参数传递的一组参数创建多个线程。 DWORD WINAPI ThreadFunc(LPVOID threadData) { } 我将它们打包到
在我将其投入类之前,它运行良好。对解决此类型转换错误有任何帮助吗? 错误 error C2440: 'type cast' : cannot convert from 'IAT CInjector::
我在使用文件映射和阅读时遇到问题。 在下面的代码中,我从 MapViewOfFile 中获取了 pMemory,但我不知道如何将内容显示到 Edit 控件,我只得到乱七八糟的字符(如汉字)。我想使用
我正在尝试创建一个线程来处理 ZIP 归档: HANDLE hThread = CreateThread( NULL, 0, ZipProcess,
不是很教授。用C++。我一直在研究的代码是:https://msdn.microsoft.com/en-us/library/windows/desktop/ee175819(v=vs.85).asp
我正在尝试将数据从传递到我的方法的参数转换为结构,我需要将数据传递到全局变量,因为它在我的应用程序的其他地方需要。 我已经尝试了以下但我收到错误提示 diceResult is an undeclar
我想读取我通过 CreateRemoteThread 发送到我在另一个进程中注入(inject)的 DLL 的参数。 我可以毫无问题地调用该函数,我只是不知道如何将 LPVOID 转换为结构。 这是一
有人可以在这里解释并帮助我吗?可以说我有这样的功能,其中 lpData 包含指向我想要的数据的指针。 void foo(LPVOID lpData) { } 检索此内容的正确方法是什么。这行得通,但最
我是 C 编程语言的初学者,我得到了以下代码: LPVOID lpvAddr; lpvAddr = VirtualAlloc(NULL, strlen(jmp_esp), 0x3000, 0x40);
我有以下 Win32 ATL 代码: CComVariant result; DWORD dwFileSize = GetFileSize(hFile, NULL); LPVOID lpBuffer
如何将 WIN32_FIND_DATA 转换为 LPVOID? 我正在尝试 Hook 一个函数,但我无法将 WIN32_FIND_DATA 转换为 LPVOID 这是我的功能: /* New Find
这个问题在这里已经有了答案: How to find the size of an array (from a pointer pointing to the first element array
好的,我正在尝试在 WFSExecute 下编写此代码,但如果我键入: WFSPINGETDATA * pingetdata = lpCmdData; 我得到一个错误: errorC2440: 'in
在 C++ 中进行类型转换时,我有时会感到困惑,它们到底返回了什么? LPVOID lpFunction; DWORD dw = (DWORD)lpFunction; // What does it
我可以在 C 中使用 void* 而不是 LPVOID 吗? 或者 LPVOID 比 void* 执行一些特殊的功能。 最佳答案 C 中没有 LPVOID 类型,这是 Windows 的东西。 存在这
我收到这个奇怪的错误: MyView:OnInitialUpdate() { int* my_int; *(my_int) = 1; AfxBeginThread(MyThre
我是一名优秀的程序员,十分优秀!