2012-01-13 139 views
0

我想从动态库中获取函数符号,然后我需要使用新函数指针替换函数库函数。代码将被写入C++文件。错误:无效值不会被忽略,因为它应该是

我用下面的步骤,

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

但是在编译的时候我得到这个“错误:没有忽略,因为它应该是空值”错误

如何解决上述情况?

谢谢

+0

'real_mal'的定义是什么?你在哪一行得到错误? – 2012-01-13 07:30:56

+0

@ joachim-defination isstatic void(* real_mal)(size_t size)= 0; – Mandar 2012-01-13 07:32:36

+1

而不是'void'返回值,不应该是'void *'?所以'void *(* real_mal)(size_t)'而不是? – 2012-01-13 07:44:03

回答

1

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

一旦你修好了,你可以写return real_mal(size);

相关问题