2016年3月7日 星期一

[轉] 使用dlsym時出現invalid conversion from void* to...

先是出錯代碼
[cpp] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. void (*FUNC)(int a);  
  2. FUNC = dlsym(handle, "FUNC");  

這個錯誤是出現在C++下面的,因為dlsym返回的是void*,但是C++又不允許隱形轉換通用指針,所以就報這個錯。
解決辦法就是寫一個typedef,然後做一次顯示類型轉換
[cpp] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. typedef (*fptr_FUNC)(int a);  
  2. fptr_FUNC FUNC = NULL;  
  3. FUNC = (fptr_FUNC)dlsym(handle, "FUNC");  

問題解決

沒有留言:

張貼留言