2012-01-13 140 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);

相關問題