invalid 'static_cast' from type 'FARPROC' {aka 'int (__attribute__((stdcall)) *)()'} to type 'void*'
时间: 2023-09-05 13:07:19 浏览: 206
c++ std::invalid_argument应用
5星 · 资源好评率100%
这个错误通常是因为在使用 `static_cast` 进行类型转换时,将一个函数指针(如 `FARPROC`)转换为了 `void*` 类型,但这种转换是不允许的。
要解决这个错误,可以使用 C++11 中新增的 `reinterpret_cast` 进行转换。具体方法如下:
1. 将 `static_cast` 改为 `reinterpret_cast`,例如:
```cpp
FARPROC func_ptr = GetProcAddress(hModule, "some_function");
void* func_addr = reinterpret_cast<void*>(func_ptr);
```
2. 重新编译项目即可。
需要注意的是,由于函数指针的类型和 `void*` 不同,因此在使用转换后的指针时需要谨慎。建议在使用前先将其转换回原本的类型,以避免出现未定义的行为。
阅读全文