错误:无法忽略void值,因为它应该是

时间:2012-01-13 07:28:36

标签: c++ function-pointers dlsym

我试图从动态库中获取函数符号,然后我需要使用新函数指针将库函数替换为库函数。代码将用c ++文件编写。

我使用了以下步骤,

{
void *temp = dlsym(<FLAGS>,<FUNC_NAME>);
*reinterpret_cast<void**>(&real_mal) = temp;
void *p = NULL;
p = real_mal(size);
return p;
}

但是在编译时我得到了这个“错误:无法忽略void值,因为它应该是”错误

我如何解决上述情况?

由于

1 个答案:

答案 0 :(得分:1)

约阿希姆的评论是正确的。第一个问题实际上是你的演员。适当的演员是 real_mal = reinterpret_cast<void*(size_t)>(dlsym(<FLAGS>,<FUNC_NAME>));。您当前的演员隐藏了real_mal的错误声明。

修复后,您只需撰写return real_mal(size);即可。