2012-01-13 2 views
0

동적 라이브러리에서 함수 기호를 가져 오려고합니다. 그런 다음 새 함수 포인터를 사용하여 함수를 라이브러리 funciton으로 바꿔야합니다. 코드는 다음과 같이 쓰여집니다. 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'의 정의는 무엇입니까? 그리고 어떤 라인에서 오류가 발생합니까? –

+0

@ joachim-defination isstatic void (* real_mal) (size_t size) = 0; – Mandar

+1

'void' 리턴 값 대신에'void *'가되어서는 안 될까요? 그래서'void * (* real_mal) (size_t)'대신에? –

답변

1

요아킴의 의견이 맞습니다. 첫 번째 문제는 실제로 당신의 던지기입니다. 적절한 캐스트는 real_mal = reinterpret_cast<void*(size_t)>(dlsym(<FLAGS>,<FUNC_NAME>));입니다. 현재 캐스트가 잘못된 선언 인 real_mal을 숨 깁니다.

일단 수정하면 return real_mal(size);으로 작성할 수 있습니다.

관련 문제