마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

dlsym 함수 인자 설정법

0 추천
dlopen 해서 파일 잘 열었는데요

 

dlsym 으로 함수를 쓸려고 합니다.

 

근데 단순 포인터 말고

 

그 함수의 인자 를 쓸려면 어떻게 해야 하죠?

 

이 질문을 정확히 이해하시는 분만 답변 부탁 드립니다.

 

예를 들어 so 파일의 함수가 Setdata(int a,int b)

 

이렇게 되어 있는데

 

이 so 파일을 dlopen 으로 잘 열었습니다.

 

그리고 저걸 dlsym(handle,"Setdata);

 

으로 이중 포인터로 잘 변수에 넣었습니다.

 

근데 SetData 는 인자 값이 2개 인데 이걸 상위의 so 에서 컨트롤 할려면 어떻게 하냐 라는 겁니다.

 

 

안드로이드펍의 수준상 답변은 올라 오지 못할거 같지만

 

혹시나 0.1% 고수분께서 보실까 하는 마음으로 올려 봅니다.

 

답변 부탁 드립니다.

 

꾸벅
날아라동아리 (620 포인트) 님이 2016년 7월 19일 질문

1개의 답변

0 추천
0.1% 고수가 아니라 dlopen를 써 본 99.9%가 아는 내용입니다.

본인이 모르거나 답 없다고 안드로이드펍 수준까지 비아하시는건...

문제가 많은 발언 같습니다.
 

아무튼 반환값을 말씀 안해주셨는데.

간단히 void Setdata(int a,int b);라 할 때

보통 아래와 같이 function pointer를 선언해서 사용합니다.

 

typedef void (*SetdataFunc)(int a,int b);

SetdataFunc setdataFunc = (SetdataFunc)dlsym(handle,"Setdata");

setdataFunc(a, b);

 

 

만약 반환값이 int라면

typedef int (*SetdataFunc)(int a,int b);

SetdataFunc setdataFunc = (SetdataFunc)dlsym(handle,"Setdata");

int ret = setdataFunc(a, b);

로 하시면 됩니다.
익명사용자 님이 2016년 7월 19일 답변
...