2012-11-21 6 views
1

dlopen을 사용하여 객체를로드하고 dlsym을 사용하여 공유 객체 함수에 대한 함수 포인터를 가져 왔습니다. 모든 것이 잘 작동합니다. 필자는 (지금은) 인쇄 만하는 공유 기능을 호출하여 테스트했으며 작동하는 주 프로그램에서 제대로 작동합니다. 이제이 함수에 두 개의 인수를 전달하려고합니다. intchar *. 누군가 공유 함수에 인수를 전달할 수있는 방법을 이해할 수 있습니까? 웹에서 검색했지만 어떻게 작동하는지 이해할 수 없습니다.공유 함수에 인수 전달 -

+2

을인가하지 두 개의 매개 변수를 기능을 한 만들기의 문제? –

+0

예 첫째로 함수 프로토 타입을 수정해야합니다 ... 저는 이것을 알고 있습니다 ...하지만 주 프로그램에서 인수로 호출하는 방법을 모르겠습니다. – SpyrosR

+1

공유 라이브러리에없는 함수를 호출하는 것과 다를 수 없습니다. 너는 그걸 잘 알고 있니? –

답변

7

로드 기능 :

int (*func)(int x, char *y) = dlsym(dl_handle, "your_function"); 

당신은 잘 당신이 dlsym()의 반환에 깁스를 필요로 결정할 수 있습니다; 그것은 동적으로로드 된 라이브러리를 가진 추함 중 하나입니다.

그것을 호출 :

int i = 37; 
char buffer[64]; 
int result1 = (*func)(i, buffer); // Old school — pre-C89 (but still works and is explicit) 
int result2 = func(i+1, buffer); // New school — can leave you looking for the wrong thing. 
+0

대단히 감사합니다! 그것은 잘 작동합니다. :) – SpyrosR