C 언어 가 코드 에서 동적 링크 라 이브 러 리 를 불 러 오 는 과정 분석

이 글 은 주로 C 언어 가 코드 에서 동적 링크 라 이브 러 리 를 불 러 오 는 과정 을 소 개 했 습 니 다.이 글 은 예시 코드 를 통 해 매우 상세 하 게 소개 되 었 고 여러분 의 학습 이나 업무 에 대해 어느 정도 참고 학습 가 치 를 가지 기 때문에 필요 한 친 구 는 참고 할 수 있 습 니 다.
함수:void*dlopen(const char*filename,int flag);
기능:동적 링크 라 이브 러 리 파일 열기
인자:filename 동적 링크 라 이브 러 리 파일 이름
flag 오픈 방식,보통 RTLDLASY
반환 값:라 이브 러 리 포인터
함수:char*dlerror(void);
기능:오류 값 가 져 오기
반환 값:오류 값
함수:void*dlsym(void*handle,const char*symbol);
기능:동적 링크 라 이브 러 리 에서 지정 한 함수 지침 가 져 오기
인자:handle 라 이브 러 리 포인터
기호 함수 이름
반환 값:매개 변수 symbol 이름과 대응 하 는 함수 포인터
함수:int dlclose(void*handle);
기능:동적 링크 라 이브 러 리 파일 닫 기
인자:라 이브 러 리 포인터
반환 값:
소스 코드

/*main.c*/
#include <dlfcn.h>//        
#include <stdio.h>
 
int main(void)
{
  const char *src = "Hello Dymatic";
  int (*pStrLen)(const char *);//     
  void *pHandle = NULL;//    
  char *pErr = NULL;//     
   
  //                  
  pHandle = dlopen("./libstr.so“, RTLD_LASY);
  pErr = dlerror();
  if(!pHandle || pErr != NULL){printf("Failed load library!
%s
", pErr);return -1;} // StrLen pStrLen = dlsym(pHandle, "StrLen"); pErr = dlerror(); if(!pStrLen || pErr == NULL){printf("%s
", pErr);return -1;} // StrLen printf("The string length is:%d
", pStrLen(src)); // dlclose(pHandle); return 0; ]
다음 명령 을 실행 가능 한 파일 로 컴 파일 합 니 다.-L./현재 디 렉 터 리,-lstr 는 StrLen 함수 가 있 는 라 이브 러 리 파일 이 고-ldl 은 dlopen 등 관련 함수 가 있 는 라 이브 러 리 파일 입 니 다.

gcc -o test main.c -L./ -lstr -ldl
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기