dlopen
을 사용하여 객체를로드하고 dlsym
을 사용하여 공유 객체 함수에 대한 함수 포인터를 가져 왔습니다. 모든 것이 잘 작동합니다. 필자는 (지금은) 인쇄 만하는 공유 기능을 호출하여 테스트했으며 작동하는 주 프로그램에서 제대로 작동합니다. 이제이 함수에 두 개의 인수를 전달하려고합니다. int
및 char *
. 누군가 공유 함수에 인수를 전달할 수있는 방법을 이해할 수 있습니까? 웹에서 검색했지만 어떻게 작동하는지 이해할 수 없습니다.공유 함수에 인수 전달 -
1
A
답변
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
을인가하지 두 개의 매개 변수를 기능을 한 만들기의 문제? –
예 첫째로 함수 프로토 타입을 수정해야합니다 ... 저는 이것을 알고 있습니다 ...하지만 주 프로그램에서 인수로 호출하는 방법을 모르겠습니다. – SpyrosR
공유 라이브러리에없는 함수를 호출하는 것과 다를 수 없습니다. 너는 그걸 잘 알고 있니? –